Flutter 如何在颤振中显示3秒钟的循环压缩机指示器

Flutter 如何在颤振中显示3秒钟的循环压缩机指示器,flutter,dart,load,Flutter,Dart,Load,是否可以使用计时器包装我的CircularProgressIndicator。。。我想展示我的CircularProgressIndicator 3秒钟,但我不知道怎么做。。。我读过的大部分资源都是包装一个函数,该函数由计时器内的CircularProgressIndicator组成。。这是我的密码 Future getData() async { SharedPreferences prefs = await SharedPreferences.getInstance(); S

是否可以使用计时器包装我的CircularProgressIndicator。。。我想展示我的CircularProgressIndicator 3秒钟,但我不知道怎么做。。。我读过的大部分资源都是包装一个函数,该函数由计时器内的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();
        }
      },
    );
  }
你可以用电脑来做

下面的代码解释得更清楚

 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),
      ),
    );
  }
你可以用电脑来做

下面的代码解释得更清楚

 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\u定时器;
int _start=3;
布尔加载=真;
void startTimer(){
const oneSec=const持续时间(秒:1);
_定时器=新定时器。周期性(
一秒,
(计时器)=>设置状态(
() {
如果(_start<1){
设置状态(){
加载=假;
});
timer.cancel();
}否则{
_开始=_开始-1;
}
},
),
);
}
@凌驾
void initState(){
startTimer();
super.initState();
}
@凌驾
无效处置(){
_timer.cancel();
super.dispose();
}
Future getData()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
字符串dataIn=prefs.getString(“时钟输入”);
返回数据输入;
}
窗口小部件defaultClock(){
回归未来建设者(
future:getData(),
生成器:(上下文,捕捉){
if(snap.hasData&&loading==false){
返回文本(快照数据);
}否则{
返回循环ProgressIndicator();
}
},
);
}
定时器\u定时器;
int _start=3;
布尔加载=真;
void startTimer(){
const oneSec=const持续时间(秒:1);
_定时器=新定时器。周期性(
一秒,
(计时器)=>设置状态(
() {
如果(_start<1){
设置状态(){
加载=假;
});
timer.cancel();
}否则{
_开始=_开始-1;
}
},
),
);
}
@凌驾
void initState(){
startTimer();
super.initState();
}
@凌驾
无效处置(){
_timer.cancel();
super.dispose();
}
Future getData()异步{
SharedReferences prefs=等待SharedReferences.getInstance();
字符串dataIn=prefs.getString(“时钟输入”);
返回数据输入;
}
窗口小部件defaultClock(){
回归未来建设者(
future:getData(),
生成器:(上下文,捕捉){
if(snap.hasData&&loading==false){
返回文本(快照数据);
}否则{
返回循环ProgressIndicator();
}
},
);
}
如果这有帮助

您可以使用计时器小部件

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

Timer(Duration(seconds: 10, callback));
如果这有帮助的话

您可以使用计时器小部件

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

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

嗨,我是飞镖新手。。。你能给我解释一下这是什么意思吗违约",这意味着,如果您没有在SharedReferences中设置时钟的任何值,那么它将采用我在???之后指定的默认值??被称为空感知运算符。通过使用您的代码。。。我不再需要我的Widget
defaultClock()
了…如果我这样说,我说对了吗?是的,你可以像我一样直接展示你的数据。等等,我会在我的代码中运行它后让你知道结果嗨,我是颤振飞镖的新手。。。你能给我解释一下这是什么意思吗违约",这意味着,如果您没有在SharedReferences中设置时钟的任何值,那么它将采用我在???之后指定的默认值??被称为空感知运算符。通过使用您的代码。。。我不再需要我的Widget
defaultClock()
了……如果我这样说,我说对了吗?是的,你可以像我一样直接展示你的数据。等等,我会在我的代码中运行它后告诉你结果