void initState() { base.initState(); _snapshot = AsyncSnapshot <T> .withData(ConnectionState.none, widget.initialData); _subscribe(); }
void didUpdateWidget(StatefulWidget statefulWidget) { var oldWidget = statefulWidget as FutureBuilder <T>; if (oldWidget == null) { return; } base.didUpdateWidget(oldWidget); if (oldWidget.future != widget.future) { if (_activeCallbackIdentity != null) { _unsubscribe(); _snapshot = _snapshot.inState(ConnectionState.none); } _subscribe(); } }
void _subscribe() { if (widget.future != null) { object callbackIdentity = new object(); _activeCallbackIdentity = callbackIdentity; widget.future.then((object dataIn) => { var data = (T)dataIn; if (_activeCallbackIdentity == callbackIdentity) { setState(() => { _snapshot = AsyncSnapshot <T> .withData(ConnectionState.done, data); }); } }, onError: (Exception error) => { if (_activeCallbackIdentity == callbackIdentity) { setState(() => { _snapshot = AsyncSnapshot <T> .withError(ConnectionState.done, error); }); } return(FutureOr.nil); }); _snapshot = _snapshot.inState(ConnectionState.waiting); } }
AsyncSnapshot <T> afterDisconnected(AsyncSnapshot <T> current) => current.inState(ConnectionState.none);
Widget build(BuildContext context, AsyncSnapshot <T> currentSummary) => builder(context, currentSummary);
AsyncSnapshot <T> afterDone(AsyncSnapshot <T> current) => current.inState(ConnectionState.done);
AsyncSnapshot <T> afterError(AsyncSnapshot <T> current, object error) { return(AsyncSnapshot <T> .withError(ConnectionState.active, error)); }
AsyncSnapshot <T> afterData(AsyncSnapshot <T> current, T data) { return(AsyncSnapshot <T> .withData(ConnectionState.active, data)); }
AsyncSnapshot <T> afterConnected(AsyncSnapshot <T> current) => current.inState(ConnectionState.waiting);
AsyncSnapshot <T> initial() => AsyncSnapshot <T> .withData(ConnectionState.none, initialData);