import 'package:flutter/cupertino.dart';

class FadeInWidget extends StatelessWidget {
  final Widget child;
  final Duration? delay;
  final Future? future;
  final Duration animationDuration;

  FadeInWidget({
    required this.child,
    this.delay = const Duration(milliseconds: 200),
    this.future,
    this.animationDuration = const Duration(milliseconds: 200),
    super.key,
  }) : assert(future != null || delay != null);

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: future ?? Future.delayed(delay!),
      builder: (context, s) {
        return AnimatedOpacity(
          duration: animationDuration,
          opacity: s.connectionState == ConnectionState.done ? 1.0 : 0.0,
          child: child,
        );
      },
    );
  }
}
