如何传递 Future 而不是值作为参数
How to pass a Future instead of a value as parameter
假设我需要创建这个 Widget():
TextButton(
onPressed: () {},
child: const Text( myModel.getNameOfCustomer() ),
)
目前,我的应用程序查询 EModel class 以同步方式获取 nameOfCustomer 的值。这是因为 EModel 完全在本地维护其存储。
假设,我想以这种方式更改 EModel,使 class 本身查询,例如一个数据库。然后,getNameOfCustomer() 需要 return 异步数据并将其包装在 Future 中。
问:如何将 Future<> 作为字符串参数传递给 Text()
?
Text()
是否有一个参数传递给 Future<> futureData
而不是 String data
,因此它自己最终会读取 futureData
的值并设置它的 String data
?
也就是说...
如果我的应用程序关于 UI 同步工作并且我切换到异步数据模型,我是否需要重写整个应用程序?
是否存在为此类迁移做准备的标准模式?
您要找的是FutureBuilder。
用这个包裹你的文本小部件,你就可以等待那个未来,而且,在等待的时候,你可以显示其他东西,比如加载 indicator/skeleton.
假设我需要创建这个 Widget():
TextButton(
onPressed: () {},
child: const Text( myModel.getNameOfCustomer() ),
)
目前,我的应用程序查询 EModel class 以同步方式获取 nameOfCustomer 的值。这是因为 EModel 完全在本地维护其存储。
假设,我想以这种方式更改 EModel,使 class 本身查询,例如一个数据库。然后,getNameOfCustomer() 需要 return 异步数据并将其包装在 Future 中。
问:如何将 Future<> 作为字符串参数传递给 Text()
?
Text()
是否有一个参数传递给 Future<> futureData
而不是 String data
,因此它自己最终会读取 futureData
的值并设置它的 String data
?
也就是说...
如果我的应用程序关于 UI 同步工作并且我切换到异步数据模型,我是否需要重写整个应用程序?
是否存在为此类迁移做准备的标准模式?
您要找的是FutureBuilder。 用这个包裹你的文本小部件,你就可以等待那个未来,而且,在等待的时候,你可以显示其他东西,比如加载 indicator/skeleton.