如何在 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));
是否可以使用 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));