gpt4 book ai didi

sqlite - 如何在 ChangeNotifier 中使用 Futures?

转载 作者:IT王子 更新时间:2023-10-29 07:17:20 25 4
gpt4 key购买 nike

我有一个 sqlite 数据库,我从中读取数据。我还有一棵很长的小部件树。因此,经过一些研究,我找到了 provider Flutter 包。但是我不知道如何在扩展 ChangeNotifier 的类中使用 Futures 或者如何在我的小部件树中的任何地方使用它?

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();
}
}

最佳答案

我建议你先去了解一下 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();
}
}

然后在您的小部件树中:

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);
);
}
}
);
}

这只是一种方法,但还有许多其他方法可以处理此问题。

关于sqlite - 如何在 ChangeNotifier 中使用 Futures?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56937162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com