future_context2_hooks 2.1.0
future_context2_hooks: ^2.1.0 copied to clipboard
A library that makes FutureContext easier to use from hooks.
future_context2_hooks #
A library that integrates Flutter's FutureContext with Flutter Hooks to safely coordinate Widget lifecycle and asynchronous processing.
Features #
- FutureContext Lifecycle Integration: Automatically links Widget lifecycle with FutureContext
- Automatic Resource Management: Automatically closes FutureContext when Widget is disposed
- Memoization Support: Control FutureContext reuse through keys parameter
Getting started #
Add the following dependency to your pubspec.yaml
:
dependencies:
future_context2_hooks: ^2.1.0
Usage #
Use Flutter Hooks to integrate FutureContext with Widget lifecycle:
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:future_context2_hooks/future_context2_hooks.dart';
class MyWidget extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
// FutureContext linked with Widget lifecycle
final futureContext = useFutureContext();
// Execute asynchronous processing
useEffect(() {
// Asynchronous processing using futureContext
futureContext.suspend(() async {
// Some asynchronous processing
await Future.delayed(Duration(seconds: 1));
print('Asynchronous processing completed');
});
return null; // futureContext is automatically closed when Widget is disposed
}, []);
return Container(
child: Text('Using FutureContext'),
);
}
}
Parameter Control #
class MyWidget extends HookConsumerWidget {
@override
Widget build(BuildContext context, WidgetRef ref) {
// Tagged FutureContext (useful for debugging)
final futureContext = useFutureContext(
tag: 'MyWidget',
);
// Reuse control with keys
final userId = ref.watch(userIdProvider);
final userContext = useFutureContext(
tag: 'UserData',
keys: [userId], // Create new FutureContext only when userId changes
);
return Container();
}
}
Additional information #
This package was created to simplify the integration of FutureContext and Flutter Hooks. By managing asynchronous processing according to Widget lifecycle, it prevents memory leaks and unexpected side effects.
Bug reports and feature requests are accepted at GitHub.