【问题标题】:Flutter : how to change the local value in other function?Flutter:如何更改其他函数中的本地值?
【发布时间】:2021-08-29 08:01:36
【问题描述】:

我不知道这是否可能,但是如何更改另一个函数中的值?

例如在这个函数中,函数接收到值但它不能返回它,因为它返回了小部件“Switch”:

import 'package:flutter/material.dart';

class CustumSwitch extends StatefulWidget {
  bool _switchGD;
  CustumSwitch(this._switchGD);

  @override
  _CustumSwitchState createState() => _CustumSwitchState();
}

class _CustumSwitchState extends State<CustumSwitch> {
  @override
  Widget build(BuildContext context) {
    return Switch(
        value: widget._switchGD,
        onChanged: (value) {
          setState(() {
            widget._switchGD = !widget._switchGD;
          });
          
        });
  }
}

【问题讨论】:

    标签: function flutter widget return-value


    【解决方案1】:

    您必须在构建期间动态更改值的每种情况下使用 setState() 方法。

    onChanged: (value) {
    
      setState((){                        
        widget._switchGD = !widget._switchGD;
      });
                            
    });
    

    它会起作用。但我建议你学习一些关于 Flutter 最佳实践的东西,因为你永远不想使用非最终字段作为 Widget 参数。

    【讨论】:

    • 对不起,我忘了setState,这只是一个例子!谢谢,我没有测试它?‍♂️
    • 你有可以学习 Flutter 最佳实践的链接吗?
    • 我测试了但是不行,调用函数中的原始变量没有改变!
    • @ismail performance, naming conventions。有很多来源,你可以在谷歌上找到它,但在你的解决方案中,我只看到非最终字段的问题。当你需要这个 bool 作为参数时,你不能直接改变它,你可以使用局部变量来代替。
    • @ismail 尝试将 bool _switchGD 从 CustumSwitch 移动到 _CustumSwitchState 并将其用作局部变量而不是参数,但您必须设置其初始值。
    猜你喜欢
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 2015-03-28
    • 2021-12-12
    • 1970-01-01
    • 2021-05-25
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多