gpt4 book ai didi

flutter - FutureBuilder返回传递给var Flutter

转载 作者:行者123 更新时间:2023-12-03 04:47:04 26 4
gpt4 key购买 nike

我需要将“.txt”文件中的一些数据存储到变量中。
为此,我使用了FutureBuilder
这个想法是用FutureBuilder处理读取 Action (异步),并将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 的信息。

您缺少odt 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 ?? "")),
);
}
}

注意上面的代码片段我还没有测试过。我只是想给出一个大概的想法。

关于flutter - FutureBuilder返回传递给var Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62102245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com