import 'package:fl_query/query.dart'; import 'package:fl_query/query_bowl.dart'; import 'package:flutter/widgets.dart'; class QueryBuilder extends StatefulWidget { final Widget Function(BuildContext, Query) builder; final QueryTaskFunction task; final String queryKey; const QueryBuilder({ required this.builder, required this.task, required this.queryKey, Key? key, }) : super(key: key); @override State> createState() => _QueryBuilderState(); } class _QueryBuilderState extends State> { late Query query; @override void initState() { super.initState(); query = Query(queryKey: widget.queryKey, task: widget.task); WidgetsBinding.instance.addPostFrameCallback((_) async { await QueryBowl.of(context).fetchQuery(query); }); } @override Widget build(BuildContext context) { final queryRT = QueryBowl.of(context).getQuery(widget.queryKey) ?? query; return widget.builder(context, queryRT); } }