import 'dart:math'; import 'package:fl_query/fl_query.dart'; import 'package:fl_query_hooks/fl_query_hooks.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; class QueryPage extends HookWidget { const QueryPage({super.key}); @override Widget build(BuildContext context) { final value = Random().nextInt(200000); final query = useQuery( 'hello', () { return Future.delayed( const Duration(seconds: 6), () => 'Hello World! $value'); }, initial: 'Hello', jsonConfig: JsonConfig( fromJson: (json) => json['data'], toJson: (data) => {'data': data}, ), onData: (value) { debugPrint('onData: $value'); }, onError: (error) { debugPrint('onError: $error'); }, ); return Scaffold( appBar: AppBar( title: const Text('Query'), ), floatingActionButton: QueryListenable('hello', builder: (context, query) { if (query == null) { return const SizedBox(); } return FloatingActionButton( onPressed: () { query.refresh(); }, child: Text(query.data ?? 'No Data'), ); }), body: query.isLoading ? const Center( child: CircularProgressIndicator(), ) : query.hasError ? Center( child: Text(query.error.toString()), ) : Center( child: Text(query.data ?? "Unfortunately, there's no data"), ), ); } }