在 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(); 
  }

代表提问者发表