import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:provider/single_child_widget.dart';

import '../infrastructure/controller.dart';


class ControllerProvider<TState extends Controller> extends SingleChildStatelessWidget {
  final TState Function(BuildContext context) create;
  final bool lazy;
  final Widget Function(BuildContext context) child;
  ControllerProvider({required this.create, this.lazy = true, required this.child, super.key})
    : super(child: Builder(builder: child));

  @override
  Widget buildWithChild(BuildContext context, Widget? child) => BlocProvider(
    create: create,
    lazy: lazy,
    child: child,
  );
}