flutter - 我应该把开始运行一次的命令放在哪里?
问题描述
我真的很怀念C编程。Flutter 相当混乱。
这是问题所在:
我们在有状态类 Home 中有一个函数。这将创建一个名为 myMenu 的页面。
class Home extends StatefulWidget {
myMenu createState() => myMenu();
}
class myMenu extends State<Home>
{
void myProblemFunction(String stringItem) async {
final db = await myDatabaseClass.instance.database;
...
}
每当 myProblemFunction 运行时,它都会实例化一个新的数据库实例。
我只想把这个命令放一次(即:
final db = await myDatabaseClass.instance.database
- )在我的文档中的任何地方(这是我的 main.dart 文件(顺便说一下)。现在,我可以把它放在 initState() 中 - 当然..但这很头疼,因为a)我必须让它异步,而且我觉得这会给我带来问题,并且 b) 在 initState() 中声明 final db... (etc) 不会使 db 变量对我的函数可见。
我该怎么办?
myMenu 类中触发的元素是什么?我应该把这个函数放在小部件构建方法中吗?但是如果小部件被刷新,那么这个函数肯定也会被调用(再次)——我只想调用一次。
谢谢
解决方案
您可以使用FutureBuilder
例子:
FutureBuilder(
future: myDatabaseClass.instance.database,
builder: (BuildContext context,AsycnSnapshot snapshot){
//your code here
},
)
这只会在构建小部件时加载Future
一次。
推荐阅读
- angular - 具有 NgrxStore 的两种状态的两个对象
- javascript - 我的 three.js 脚本没有在框架上运行
- javascript - 如何在 Javascript 中使用日期/时间进行操作?
- jquery - 如何使用 .geocomplete 减少对 GoogleMaps API 的请求数量
- rx-java - 如何根据列表项中的先前排放删除重复项
- azure - 用户、设备的 Azure AD“通用”设置
- sql - 根据同一行中的另一个值从行中选择某个值
- android - Xamarin Forms - 使用资源/布局中的相对布局的 Android 按钮
- c - 如何在 C 中将二维数组作为参数传递?
- c# - 通过解析 xml 文件 (app.config) 读取应用程序设置的优雅解决方案