在内置颤振之前初始化变量



我正在尝试初始化initstate中的一个变量。在初始化之前,null值在我的scaffold中使用。如何等待变量,然后再加载构建?我正在使用shared_preference插件。这是我的初始状态:

void initState() {
super.initState();
_createInterstitialAd();
Future.delayed(Duration.zero, () async {
prefs = await SharedPreferences.getInstance();
future = Provider.of<Titles>(context, listen: false).fetchAndSetPlaces();
identifier = await getimages();
});

在这里,我正在检查它是否为空并且始终为空:

@override
Widget build(BuildContext context) {
print(prefs);

为什么要在init状态下初始化变量。在上下文中使用Future Builder,首先获取变量数据,然后执行构建。

class FutureDemoPage extends StatelessWidget {

Future<String> getData() {
return Future.delayed(Duration(seconds: 2), () {
return "I am data";
// throw Exception("Custom Error");
});
}

@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text('Future Demo Page'),
),
body: FutureBuilder(
builder: (ctx, snapshot) {
// Checking if future is resolved or not
if (snapshot.connectionState == ConnectionState.done) {
// If we got an error
if (snapshot.hasError) {
return Center(
child: Text(
'${snapshot.error} occured',
style: TextStyle(fontSize: 18),
),
);

// if we got our data
} else if (snapshot.hasData) {
// Extracting data from snapshot object
final data = snapshot.data as String;
return Center(
child: Text(
'$data',
style: TextStyle(fontSize: 18),
),
);
}
}
// Displaying LoadingSpinner to indicate waiting state
return Center(
child: CircularProgressIndicator(),
);
},
// Future that needs to be resolved
// inorder to display something on the Canvas
future: getData(),
),
),
);

}}

如果您稍后想要initialize一个变量,那么我们有用于此目的的late关键字。当declaring是一个变量时,您可以使用如下所示的方法:

late String prefs;

首先,您必须了解颤振的生命周期。我为你简化了。。

  1. createState((
  2. initState((
  3. didChangeDependencies((
  4. build((
  5. didUpdateWidget((
  6. setState((
  7. 处置((

所以每个覆盖函数都有固定的功能。例如,initState只能用于正常初始化。它无法保持/等待流动好几次。因此,任何异步方法都不适用于initState内部。

对于解决方案,您必须使用FutureBuilder等待数据或在导航到下一页之前初始化首选项,然后继续。

我假设您有3个不同的条件:用于偏好的第一等待数据,从这些偏好中获取未来的数据,并渲染结果。

试试这个:集团模式

它基本上是应用程序ui 的流到不同状态和逻辑部分

相关内容

  • 没有找到相关文章

最新更新