ente/lib/ui/change_notifier_builder.dart
Vishnu Mohandas a8cdc811fd Hello world
2020-03-25 01:29:36 +05:30

47 lines
970 B
Dart

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);
}
}