flutter - FutureBuilder 返回传递给 var Flutter
问题描述
我需要将“.txt”文件中的一些数据存储到变量中。为此,我使用了FutureBuilder
. 这个想法是处理读取操作(异步)FutureBuilder
并将FutureBuilder
返回传递给我的全局变量,该变量将在需要时更新。
Future<String> _read() async {
try {
final file = await _localBio;
String body = await file.readAsString();
// Read the file.
return body;
} catch (e) {
// If encountering an error, return 0.
return "Can't read";
}
}
var bio ="";
String _ReadBio(){
FutureBuilder<String>(
future: _read(),
builder: (context, snapshot){
if (snapshot.hasData) {
bio=snapshot.data.toString(); //this isn't done
return Text("");
}
else {
return Text("Error occured");
}
}
);
return "";
}
然后在TextField
我想展示里面存储bio
的应该是"bio.txt"
.
child: Text(
_ReadBio()== "" //always true if no error occured
? bio
: "Tell us something about you...",
),
但是显示的是第一个bio
值,我不知道为什么。
解决方案
我强烈建议您阅读有关FutureBuilder
.
您错过了 od 点FutureBuilder
,因为它是一个放置在小部件树中的小部件,您所做的事情被放置在一个返回空字符串的函数上。
相反,你可以这样做,
Future<Widget> _readAndBuildBioWidget(){
return FutureBuilder<String>(
future: _read(),
builder: (context, snapshot){
if (snapshot.hasData) {
bio=snapshot.data.toString(); //this isn't done
return Text(bio ?? "");
}
else {
return Text("Error occured");
}
}
);
return "";
}
@override
void build() {
return Scaffold(
child: _readAndBuildBioWidget(),
);
}
或者您可以执行以下操作,
class _HomeScreenState extends State<HomeScreen> {
var bio = "";
Future<String> _read() async {
try {
final file = await _localBio;
String body = await file.readAsString();
return body;
} catch (e) {
return "Can't read";
}
}
@override
void initState() {
_read().then((onValue) => bio = onValue);
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(child: Text(bio ?? "")),
);
}
}
注意上面的代码片段我没有测试过。我只是想给出一个粗略的想法。
推荐阅读
- jenkins - jenkins 中是否有解决方案来限制 TEXT 参数的字符输入?
- azure - 获取 Azure 数据工厂中源和接收器中的记录数
- docker - 你能在 VM 中下载没有 Docker 的 Docker 镜像吗?
- firebase - 将 Firestore 模拟器连接到 flutter_test
- android - 在 DialogFragment [Kotlin] 中调用父片段函数
- javascript - 在添加新数据之前从 div 中删除元素
- node.js - 请求清除缓存服务器缓存
- flutter - BoxConstraints 强制在 Flutter 的 AlertDialog 中使用 RadioListTile 时引发无限宽度异常
- python - 为什么我的图片显示在我的联系人文件中?
- powershell - 使用 powershell 将文件转换为 .txt