12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- import 'package:flutter/material.dart';
- typedef Widget ChangeNotifierWidgetBuilder<T extends ChangeNotifier>(
- BuildContext context,
- T value,
- );
- class ChangeNotifierBuilder<T extends ChangeNotifier> extends StatefulWidget {
- final ChangeNotifierWidgetBuilder<T> builder;
- final T value;
- const ChangeNotifierBuilder({
- Key key,
- @required this.builder,
- @required this.value,
- }) : super(key: key);
- @override
- _ChangeNotifierBuilderState createState() => _ChangeNotifierBuilderState();
- }
- class _ChangeNotifierBuilderState extends State<ChangeNotifierBuilder> {
- @override
- void initState() {
- super.initState();
- widget.value.addListener(_onChange);
- }
- void _onChange() {
- if (mounted) {
- setState(() {});
- }
- }
- @override
- void dispose() {
- widget.value.removeListener(_onChange);
- super.dispose();
- }
- @override
- Widget build(BuildContext context) {
- return widget.builder(context, widget.value);
- }
- }
|