gpt4 book ai didi

flutter - 解决后,Flutter/Dart将不会显示FutureBuilder快照

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

我试图像这样从SharedPreferences设置一个字段值:

FutureBuilder<String>(
future: _getUsername(),
initialData: 'Bruh',
builder: (BuildContext context, AsyncSnapshot<String> snapshot) {
print(snapshot);
print(snapshot.data);
print(snapshot.hasData);
return snapshot.hasData ? TextFormField(initialValue: snapshot.data, onChanged: _setUsername) : TextFormField();
}
),

这是我正在使用的_getUsername() future :
Future<String> _getUsername() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString('username') ?? 'hmm';
return "Fine";
}

这是控制台输出:
Reloaded 0 of 567 libraries in 352ms.
I/flutter (28961): AsyncSnapshot<String>(ConnectionState.done, tesy, null)
I/flutter (28961): tesy
I/flutter (28961): true

如您所见,输出的L2显示“tesy”,这是SharedPreferences中的值,但我只在文本字段中看到“Bruh”(初始值)。

在我能找到的所有示例中,在将“tesy”显示在输入框中之前,将“短暂地”显示“Bruh”(如果有的话)。我要去哪里错了?

最佳答案

尝试改变

TextFormField(initialValue: snapshot.data, onChanged: _setUsername)


TextFormField(key: UniqueKey(), initialValue: snapshot.data, onChanged: _setUsername)

这是因为TextFormField为“有状态”,并且小部件树未检测到更改,因此未放置唯一键,无法完成所需的工作,另一个选择是使用TextEditingrController更新值。

关于flutter - 解决后,Flutter/Dart将不会显示FutureBuilder快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60269915/

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