如何在 flutter 中显示 CircularProgressIndicator 3 秒

How to show CircularProgressIndicator for 3 seconds in flutter

是否可以使用 Timer 包装我的 CircularProgressIndicator...我想显示我的 CircularProgressIndicator 3 秒,但我不知道该怎么做...我读过的大部分资源都是包装一个由 Timer 内部的 CircularProgressIndicator 组成的函数。这是我的代码

Future getData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String dataIn = prefs.getString("clockin");
    return dataIn;
  }

Widget defaultClock() {
    return FutureBuilder(
      future: getData(),
      builder: (context, snap) {
        if (snap.hasData) {
          return Text(snap.data);
        } else {
          return CircularProgressIndicator();
        }
      },
    );
  }

您可以使用 Future.delayed

下面用最少的代码解释的更清楚。

 String data;
  Future getData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String dataIn = prefs.getString("clockin") ?? 'default';
    return dataIn;
  }

  callme() async {
    await Future.delayed(Duration(seconds: 3));
    getData().then((value) => {
          setState(() {
            data = value;
          })
        });
  }

  @override
  void initState() {
    super.initState();
    callme();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: data == null ? CircularProgressIndicator() : Text(data),
      ),
    );
  }
  Timer _timer;
  int _start = 3;
  bool loading = true;

  void startTimer() {
    const oneSec = const Duration(seconds: 1);
    _timer = new Timer.periodic(
      oneSec,
      (Timer timer) => setState(
        () {
          if (_start < 1) {
            setState(() {
              loading = false;
            });
            timer.cancel();
          } else {
            _start = _start - 1;
          }
        },
      ),
    );
  }


  @override
     void initState() {
       startTimer();
       super.initState();
  }


  @override
  void dispose() {
    _timer.cancel();
    super.dispose();
}


Future getData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String dataIn = prefs.getString("clockin");
    return dataIn;
  }

Widget defaultClock() {
    return FutureBuilder(
      future: getData(),
      builder: (context, snap) {
        if (snap.hasData && loading == false ) {
          return Text(snap.data);
        } else {
          return CircularProgressIndicator();
        }
      },
    );
  }

如果这有帮助,

您可以使用计时器小部件。

加载时显示 CircularProgessIndicator,最后您可以在 10 秒后调用您需要的函数。

Timer(Duration(seconds: 10, callback));