import 'package:flutter/widgets.dart'; enum _Action { increment, decrement, } class MyStore extends ValueNotifier { MyStore() : super(0); void increment() => value++; void decrement() => value--; } class Bar {} class Initial implements Bar {} class Loading implements Bar {} class Error implements Bar { Error(this.err); final Object err; } class Loaded implements Bar { Loaded(this.value); final int value; } class Foo extends ValueNotifier { Foo() : super(Initial()); Future fetch() async { value = Loading(); try { final result = await Future.delayed(Duration(seconds: 1)); value = Loaded(result); } catch (err) { value = Error(err); } } }