android - 如何获取未来的返回语句并将其放入小部件中?
问题描述
我一直在尝试在小部件中添加 Future 的返回语句。这是我的未来代码:
Future<Widget> readName() async {
try {
final file = await _localNames;
// Read the file
String contents = await file.readAsString();
return Text('Assignment' + contents);
} catch (e) {
// If encountering an error, return 0
return Text('Error');
}
}
这是我的小部件:
Widget build(BuildContext ctxt) {
return MaterialApp(
home: Scaffold(
appBar: new AppBar(
title: new Text("My assignments"),
),
body: Container(
margin: const EdgeInsets.only(top: 10.0),
child: Align(
alignment: Alignment(0, -0.9),
child: Column(
children: <Widget>[
// Need Text Here
],
),
),
),
),
);
}
你如何解决这个问题?我一直试图找出解决方案一天。谢谢你的时间!
解决方案
您可以使用 FutureBuilder 从 Future 获取数据并根据需要使用它;
FutureBuilder
根据文档是:
基于与 Future 交互的最新快照构建自身的小部件
下面的代码可以很好地使用 FutureBuilder:
Widget build(BuildContext ctxt) {
return MaterialApp(
home: Scaffold(
appBar: new AppBar(
title: new Text("My assignments"),
),
body: Container(
margin: const EdgeInsets.only(top: 10.0),
child: Align(
alignment: Alignment(0, -0.9),
child: Column(
children: <Widget>[
// Need Text Here
FutureBuilder<Widget>(
future: readName(),
builder: (context, snapshot) {
if (snapshot.hasData)
return snapshot.data;
return Center(child: CircularProgressIndicator());
}
),
],
),
),
),
),
);
}
阅读有关 FutureBuilder 的更多信息。检查以下链接: FutureBuilder
推荐阅读
- android - 如何获取裁剪图像并将其显示在 ImageView 中?
- sas - 在 procsurveyfreq、未调整的 procsurveylogistic 和调整的 procsurveylogistic 程序中遇到域声明问题
- r - 如何使 gsub() 在整个列上工作?
- python - Python 中的 Yellow Pages Scraper 停止工作
- selenium - 如何在 selenium 中为 https://www.flipkart.com/ 处理登录窗口
- python-3.x - Python OpenGL 纹理无法正确加载
- mysql - 关系数据库模式设计 - 如何直接从实体的字段集建模一对一映射
- go - scanner.Scan() 在 GoLand 调试器中挂起
- r - R 问题:如何创建一个包含 2 个变量的直方图?
- string - 如何在haskell中的空格后拆分字符串?