Flutter 在变量值改变时执行一个函数

标签 flutter dart

我是 flutter 的新手,在我的小部件中我有一个整数,我想在它的值改变时执行一个函数。

  import 'package:flutter/material.dart';
   
  class TestPageWidget extends StatefulWidget {
    const TestPageWidget({ Key? key }) : super(key: key);

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

  class _TestPageWidgetState extends State<TestPageWidget> {

   int myItem = 1; //listen changes to this and execute a function


   @override
   void initState() {
    super.initState();
   
    //change myItem value after 3 seconds
     Future.delayed(Duration(seconds: 3), () {
        myItem = 3;
    });
  }
   
  //something like this. Am not sure how i can listen for the change
  ValueNotifier(value) {
      print('Value as now changed'); //expected this to show after delay of 3 seconds
  }
}

AM 更改 initstate 中的值并使用 ValueNotifier 检查它是否已更改,但即使更改后也不会打印。有没有一种方法可以监视 myItem 值并在值发生变化时执行函数。

最佳答案

根据您的要求,有一个不使用 ValueNotifier 的简单解决方案。 ValueNotifier 更适合当你想在一个值改变时刷新一个 widget

class _TestPageWidgetState extends State<TestPageWidget> {

   int myItem = 0; //listen changes to this and execute a function

   void setItem(int itemValue){
     this.myItem = itemValue;
     this.itemChanged();
    
    }
   @override
   void initState() {
    super.initState();
   
    //change myItem value after 3 seconds
     Future.delayed(Duration(seconds: 3), () {
        setItem(3);
    });
  }
   
  void itemChanged() {
      print(this.myItem);
}

关于Flutter 在变量值改变时执行一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69407267/

相关文章:

dart - flutter :为什么我不能使用最终成员字段作为小部件的填充?

dart - Polymer-Dart 等效函数

firebase - Flutter firestore:使用 'where'和DISTINCT文档字段查询文档

flutter - 每1秒如何输出值?

dart - 如果我完全不熟悉编程,如何开始使用 Google Dart?

string - 在字符串列表上实现搜索

api - Flutter:Futurebuilder从类中获取空值

java - flutter 医生结果为 "cmdline-tools component is missing"

android - Flutter Inkwell导航器上下文在Card中不起作用

flutter - 我应该如何使用stream.cast而不是typed?