【问题标题】:Flutter/Dart - Open a view after a delay or break beforeFlutter/Dart - 在延迟或中断之前打开视图
【发布时间】:2021-04-21 11:31:58
【问题描述】:

在问题"Open a view after a delay"copsOnRoad 给出 结果如下:

import 'dart:async';

// 1. Option with Timer
Timer(Duration(seconds: 5), () {
  // 5s over, navigate to a new page
  Navigator.pushNamed(context, MaterialPageRoute(builder: (_) => Screen2()));
});


// 2. Option -- Using Future.delayed class
Future.delayed(Duration(seconds: 5), () {
  // 5s over, navigate to a new page
  Navigator.pushNamed(context, MaterialPageRoute(builder: (_) => Screen2()));
});

我想给用户一个选项来停止 Navigator.pushNamed 的执行 在等待的 5 秒内。这怎么可能?

【问题讨论】:

    标签: flutter dart delay flutter-futurebuilder


    【解决方案1】:

    您可以定义一个布尔值,如果它被取消,则推送或不喜欢:

    
    import 'dart:async';
    
    bool isCancelled = false;
    
    // 1. Option with Timer
    Timer(Duration(seconds: 5), () {
      // 5s over, navigate to a new page
      Navigator.pushNamed(context, MaterialPageRoute(builder: (_) => Screen2()));
    });
    
    
    // 2. Option -- Using Future.delayed class
    Future.delayed(Duration(seconds: 5), () {
      if(!isCancelled )
      Navigator.pushNamed(context, MaterialPageRoute(builder: (_) => Screen2()));
    });
    
    and a button to change state of isCancelled 
    

    【讨论】:

    • 如果我再次按下按钮,Future.delayedTimer会继续执行吗?
    • 你可以在按钮上做任何你想做的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多