of<T extends Object> static method
onlyProvider
false: read Provider first, then DI
true: only read provider;
null: read DI first, then Provider;
Implementation
static T of<T extends Object>(
BuildContext context, {
bool? onlyProvider = false,
GetIt? di,
}) {
if (onlyProvider == false) {
// Provider -> DI
try {
return Provider.of<T>(context, listen: false);
} catch (e) {
return _readDI<T>(nothrow: false, di: di)!;
}
} else if (onlyProvider == true) {
// Provider
return Provider.of<T>(context, listen: false);
} else {
// DI -> Provider
try {
return _readDI<T>(nothrow: false, di: di)!;
} catch (e) {
log(
'Waring! `read<$T>(onlyProvider=null)` read Global first, then Provider',
name: 'FlowR',
);
return Provider.of<T>(context, listen: false);
}
}
}