在 setState 之后保留旧值 - Flutter
Old value kept after a setState - Flutter
我有一个简单代码的问题。
我有一个 Futurbuider,在这个文本中,我用 setState 更新了文本,但它 returns 每次文本出现在我的 Future
class _HomejeuState extends State<Homejeu> {
bool _visible = true;
var list = [];
var texte1 = '';
Future<String> showLoginPage() async {
var sharedPreferences = await SharedPreferences.getInstance();
var valeurlangue = sharedPreferences.getString("Langconfig") ?? 'NON';
if (valeurlangue == 'FR') {
list = [1, 2, 3, 4, 5];
texte1 =
'bla bla bla bla bla bla';
} else {
list = [7, 8, 9, 0];
texte1 =
'hello hello hello hello hello hello';
}
return valeurlangue;
}
我通过void函数修改文本
void lanceuboule() {
Future.delayed(const Duration(milliseconds: 500), () {
setState(() {
texteboule = 'text text text text';
});
});
}
我不明白。我的印象是完全重新启动了 futurbluider 小部件。如果这是问题,如何防止它。
谢谢
我找到了解决方案:
我删除了 future 小部件并通过 future <void>
修改了我的 future <String>
然后添加了一个 initState
Future<void> showLoginPage() async {
var sharedPreferences = await SharedPreferences.getInstance();
//sharedPreferences.setString('Langconfig', 'oui');
var valeurlangue = sharedPreferences.getString("Langconfig") ?? 'NON';
if (valeurlangue == 'FR') {
setState(() {
list = [1, 2, 3, 4, 5];
texteboule =
'bla bla bla bla bla bla';
});
} else {
setState(() {
list = [7, 8, 9, 0];
texteboule =
'hello hello hello hello hello hello';
});
}
}
@override
void initState() {
super.initState();
showLoginPage();
}
代表提问者发表
我有一个简单代码的问题。 我有一个 Futurbuider,在这个文本中,我用 setState 更新了文本,但它 returns 每次文本出现在我的 Future
class _HomejeuState extends State<Homejeu> {
bool _visible = true;
var list = [];
var texte1 = '';
Future<String> showLoginPage() async {
var sharedPreferences = await SharedPreferences.getInstance();
var valeurlangue = sharedPreferences.getString("Langconfig") ?? 'NON';
if (valeurlangue == 'FR') {
list = [1, 2, 3, 4, 5];
texte1 =
'bla bla bla bla bla bla';
} else {
list = [7, 8, 9, 0];
texte1 =
'hello hello hello hello hello hello';
}
return valeurlangue;
}
我通过void函数修改文本
void lanceuboule() {
Future.delayed(const Duration(milliseconds: 500), () {
setState(() {
texteboule = 'text text text text';
});
});
}
我不明白。我的印象是完全重新启动了 futurbluider 小部件。如果这是问题,如何防止它。 谢谢
我找到了解决方案:
我删除了 future 小部件并通过 future <void>
修改了我的 future <String>
然后添加了一个 initState
Future<void> showLoginPage() async {
var sharedPreferences = await SharedPreferences.getInstance();
//sharedPreferences.setString('Langconfig', 'oui');
var valeurlangue = sharedPreferences.getString("Langconfig") ?? 'NON';
if (valeurlangue == 'FR') {
setState(() {
list = [1, 2, 3, 4, 5];
texteboule =
'bla bla bla bla bla bla';
});
} else {
setState(() {
list = [7, 8, 9, 0];
texteboule =
'hello hello hello hello hello hello';
});
}
}
@override
void initState() {
super.initState();
showLoginPage();
}
代表提问者发表