代码之家  ›  专栏  ›  技术社区  ›  acincognito

颤振运行功能每x秒一次

  •  3
  • acincognito  · 技术社区  · 6 年前

    this post 要每x时间运行一个函数,请执行以下操作:

    class _MainPage extends State<MainPage> {
      int starter = 0;
    
      void checkForNewSharedLists(){
        // do request here
        setState((){
          // change state according to result of request
        });
    
      }
    
      Widget build(BuildContext context) {
        Timer.periodic(Duration(seconds: 15), (Timer t) => checkForNewSharedLists());
      }
    } 
    

    有人知道怎么修吗?

    1 回复  |  直到 6 年前
        1
  •  100
  •   CopsOnRoad    6 年前

    build() Timer.periodic 已创建。

    你得把密码从 生成() 喜欢

    Timer timer;
    
    @override
    void initState() {
      super.initState();
      timer = Timer.periodic(Duration(seconds: 15), (Timer t) => checkForNewSharedLists());
    }
    
    @override
    void dispose() {
      timer?.cancel();
      super.dispose();
    }
    

    更好的做法是将这些代码完全从API层或类似的小部件中移出,并使用 StreamBuilder 在数据更新的情况下更新视图。

        2
  •  2
  •   Jitesh Mohite    4 年前

    使用 Cron lib将定期运行,但Timer和Cron之间存在差异,

    计时器: 它在给定的特定时间间隔上运行一个任务,不管是秒、分钟还是小时。

    克朗: 它用于更复杂的时间间隔,例如:如果一个任务需要在一个小时的特定时间运行。让我们看看图表

    enter image description here

    上图中有一个星号,表示出现在特定位置的数字。

    import 'package:cron/cron.dart';
    
    main() {
      var cron = new Cron();
      cron.schedule(new Schedule.parse('*/3 * * * *'), () async {
        print('every three minutes');
      });
      cron.schedule(new Schedule.parse('8-11 * * * *'), () async {
        print('between every 8 and 11 minutes');
      });
    }
    

    上面的例子取自存储库,它很好地解释了 表示分钟,类似于小时,以此类推,如图所示。

    另一个例子是 会是 Schedule.parse(* 1,2,3,4 * * *) ,此时间表将在每天凌晨1点、凌晨2点、凌晨3点和凌晨4点期间每分钟运行一次。

    https://code.tutsplus.com/tutorials/scheduling-tasks-with-cron-jobs--net-8800