【问题标题】:Flutter detect when value passed to the statefull widget changesFlutter 检测传递给有状态小部件的值何时发生变化
【发布时间】:2021-10-08 11:06:17
【问题描述】:

我有一个有状态的小部件,正在向其中传递一个整数。当传递给小部件的值发生变化时,我想执行一个方法

class Test extends StatefulWidget {
 final String item;
 const Test({
  Key? key,
  required this.item,
 }) : super(key: key);

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

class _TestState extends State<Test> {
 List<String> hh = [];

 @override
 void initState() {
  super.initState();
  print("init state value is  ${widget.item}");
 }

 @override
 Widget build(BuildContext context) {
  return Container();
 }

 void getDataItems() {
  print("value passed is ${widget.item}");

  setState(() {
    hh = [widget.item];
  });
 }
}

所以在上面我想检测传递给小部件的字符串项的值何时发生变化并调用方法getDataItems,该方法稍后将更新列表hh。 如何检测传递的 statefull 小部件的值何时发生变化?

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    你可以查看useEffect,它基于React hook useEffect。

    或者你可以硬编码它。

    创建其他整数:late int lastCalledInteger;

    并在构建中检查:

    @override
    Widget build(BuildContext context) {
      if(lastCalledInteger != integer) {
        getDataItems();
        lastCalledInteger = integer;
      }
    
      return Container();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-08-03
      • 2023-02-05
      • 2020-12-01
      • 2019-08-29
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      相关资源
      最近更新 更多