async_loader
async_loader copied to clipboard
Null-Safety
Any plans to migrate this package to null-safety soon?
Since this project appears to be abandoned, I'll share what I did to replace usages in my project and unblock my null safety migration:
Before:
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(builder: (BuildContext context) {
return AsyncLoader(
initState: () => myInitState(),
renderLoad: () => const Center(child: CircularProgressIndicator()),
renderError: ([dynamic error]) => const Text('Error!'),
renderSuccess: ({dynamic data}) => getView(context, data),
);
}),
);
}
After:
Future<MyData> _myInitState;
@override
void initState() {
super.initState();
_myInitState = myInitState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(builder: (BuildContext context) {
return FutureBuilder<MyData>(
future: _myInitState,
builder: (BuildContext context, AsyncSnapshot<MyData> snapshot) {
if (snapshot.hasError) {
return const Text('Error!');
} else if (snapshot.hasData) {
return getView(context, snapshot.data!);
} else {
return const Center(child: CircularProgressIndicator());
}
}
);
}),
);
}
To trigger a reload, you can also replace:
final GlobalKey<AsyncLoaderState> _asyncLoaderState = GlobalKey<AsyncLoaderState>();
_asyncLoaderState.currentState.reloadState();
With a simple call to:
setState(() {});