UVi*_*Vic 2 sqlite dart flutter flutter-provider
我有一个sqlite
从中读取数据的数据库。我也有一个很长的小部件树。所以经过一番研究,我找到了provider
Flutter 包。但是我不知道如何在扩展类中使用 FuturesChangeNotifier
或如何在我的小部件树中的任何地方使用它?
class MyProvider with ChangeNotifier {
dynamic _myValue;
dynamic get myValue => _myValue;
set myValue(dynamic newValue) {
_myValue = newValue;
notifyListeners();
}
MyProvider(){
loadValue();
}
Future<void> loadValue async {
myValue = await db.instance().getValue();
}
Future<void> refetch async {
myValue = await db.instance().newValue();
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我建议你先去了解 Futures 和 Provider 包是如何工作的。您可以使用 .then() 方法直接在您的小部件树中等待 Future 完成,或者您可以像这样在提供程序中处理它:
class MyProvider with ChangeNotifier {
dynamic _myValue;
dynamic get myValue => _myValue;
set myValue(dynamic newValue) {
_myValue = newValue;
notifyListeners();
}
MyProvider(){
loadValue();
}
Future<void> loadValue async {
myValue = await db.instance().getValue();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在您的小部件树中:
build(context) {
return ChangeNotifierProvider.value(
value: MyProvider(),
child: Consumer<MyProvider>(builder:
(BuildContext context, MyProvider provider, Widget child) {
if(provider.myValue == null) {
return Center(
child: CircularProgressIndicator(),
);
} else {
return Container(
child: Text(provider.myValue);
);
}
}
);
}
Run Code Online (Sandbox Code Playgroud)
这只是一种方法,但还有很多其他方法可以解决这个问题。
归档时间: |
|
查看次数: |
2909 次 |
最近记录: |