Skip to content

Instantly share code, notes, and snippets.

View fabiomsr's full-sized avatar

Fabio Santana fabiomsr

View GitHub Profile
class MyHomePage extends StatelessWidget {
final _counter = new ValueNotifier(0);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("ValueListenableBuilder example"),
),
body: CounterListenableProvider(
class CounterText extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ValueListenableBuilder<int>(
valueListenable: CounterListenableProvider.of(context),
builder: (context, value, child) {
return new Text(value.toString());
});
}
static ValueListenable<int> of(BuildContext context) {
return (context.inheritFromWidgetOfExactType(CounterListenableProvider)
as CounterListenableProvider)
.counter;
}
class CounterListenableProvider extends InheritedWidget {
final ValueListenable<int> counter;
CounterListenableProvider({Key key, @required this.counter, Widget child})
: super(key: key, child: child);
@override
bool updateShouldNotify(InheritedWidget oldWidget) {
return true;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("ValueListenableBuilder example"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
class MyHomePage extends StatelessWidget {
final _counter = new ValueNotifier<int>(0);
}
class CounterText extends StatelessWidget {
final ValueListenable<int> _counter;
CounterText(this._counter);
@override
Widget build(BuildContext context) {
return ValueListenableBuilder<int>(
valueListenable: _counter,
builder: (context, value, child) {
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("NotificationListener example"),
),
body: NotificationListener<TimeNotification>(
child: Timer(),
onNotification: (notification) {
class Timer extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FlatButton(
child: Text("Get time!"),
onPressed: () {
final time = DateTime.now().toIso8601String();
TimeNotification(time: time)..dispatch(context);
},
);
class TimeNotification extends Notification {
final String time;
const TimeNotification({this.time});
}