ฉันต้องการเรียกใช้ฟังก์ชันหลังจากเกิดความล่าช้าหลังจากที่สร้างวิดเจ็ตแล้ว วิธีสำนวนในการทำสิ่งนี้ใน Flutter คืออะไร?
สิ่งที่ฉันพยายามบรรลุ: ฉันต้องการเริ่มต้นด้วยFlutterLogo
วิดเจ็ตเริ่มต้นจากนั้นเปลี่ยนstyle
คุณสมบัติหลังจากผ่านไประยะหนึ่ง
ฉันต้องการเรียกใช้ฟังก์ชันหลังจากเกิดความล่าช้าหลังจากที่สร้างวิดเจ็ตแล้ว วิธีสำนวนในการทำสิ่งนี้ใน Flutter คืออะไร?
สิ่งที่ฉันพยายามบรรลุ: ฉันต้องการเริ่มต้นด้วยFlutterLogo
วิดเจ็ตเริ่มต้นจากนั้นเปลี่ยนstyle
คุณสมบัติหลังจากผ่านไประยะหนึ่ง
คำตอบ:
คุณสามารถใช้Future.delayed
เพื่อเรียกใช้โค้ดของคุณได้หลังจากผ่านไประยะหนึ่ง เช่น:
Future.delayed(const Duration(milliseconds: 500), () {
// Here you can write your code
setState(() {
// Here you can write your code for open new view
});
});
ในฟังก์ชัน setState คุณสามารถเขียนโค้ดที่เกี่ยวข้องกับ UI ของแอพได้เช่นข้อมูลหน้าจอรีเฟรชเปลี่ยนข้อความฉลาก ฯลฯ
คิดออก😎
class AnimatedFlutterLogo extends StatefulWidget {
@override
State<StatefulWidget> createState() => new _AnimatedFlutterLogoState();
}
class _AnimatedFlutterLogoState extends State<AnimatedFlutterLogo> {
Timer _timer;
FlutterLogoStyle _logoStyle = FlutterLogoStyle.markOnly;
_AnimatedFlutterLogoState() {
_timer = new Timer(const Duration(milliseconds: 400), () {
setState(() {
_logoStyle = FlutterLogoStyle.horizontal;
});
});
}
@override
void dispose() {
super.dispose();
_timer.cancel();
}
@override
Widget build(BuildContext context) {
return new FlutterLogo(
size: 200.0,
textColor: Palette.white,
style: _logoStyle,
);
}
}
Timer
จากที่ไหน
import 'dart:async'
timer = ...
ในการinitState
แทนที่ ด้วยวิธีนี้คุณจะสามารถเข้าถึงwidget
สิ่งที่กำหนดไว้ในตัวState<>
สร้าง
ทริกเกอร์การดำเนินการหลังจากการนับถอยหลัง
Timer(Duration(seconds: 3), () {
print("Yeah, this line is printed after 3 seconds");
});
ทำซ้ำการกระทำ
Timer.periodic(Duration(seconds: 5), (timer) {
print(DateTime.now());
});
ทริกเกอร์จับเวลาทันที
Timer(Duration(seconds: 0), () {
print("Yeah, this line is printed immediately");
});
เพียงแค่เพิ่มคำอธิบายมากกว่าคำตอบข้างต้น
ฟังก์ชัน Timer ทำงานร่วมกับช่วงเวลาด้านล่างด้วย:
const Duration(
{int days = 0,
int hours = 0,
int minutes = 0,
int seconds = 0,
int milliseconds = 0,
int microseconds = 0})
ตัวอย่าง:
Timer(Duration(seconds: 3), () {
print("print after every 3 seconds");
});
(เพิ่มการตอบกลับใน q เก่าเนื่องจากเป็นผลลัพธ์อันดับต้น ๆ ใน google)
ฉันพยายามยอมรับสถานะใหม่ในการเรียกกลับภายในกลุ่ม แต่ก็ไม่ได้ผล พยายามกับตัวจับเวลาและอนาคตล่าช้า
อย่างไรก็ตามสิ่งที่ได้ผลคือ ...
await Future.delayed(const Duration(milliseconds: 500));
yield newState;
รออนาคตที่ว่างเปล่าจากนั้นเรียกใช้ฟังก์ชันในภายหลัง
Future.delayed(Duration(seconds: 3) , your_function)
คุณสามารถทำได้ 2 วิธีคือ 1 Future.delayed
และ 2 คือTimer
การใช้ Timer
Timer
เป็นคลาสที่แสดงถึงตัวจับเวลานับถอยหลังที่กำหนดค่าให้ทริกเกอร์การดำเนินการเมื่อถึงเวลาสิ้นสุดและสามารถเริ่มทำงานหนึ่งครั้งหรือซ้ำ ๆ
อย่าลืมนำเข้า dart:async
แพ็กเกจเพื่อเริ่มโปรแกรมที่จะใช้ Timer
Timer(Duration(seconds: 5), () {
print(" This line is execute after 5 seconds");
});
ใช้ Future.delayed
Future.delayed
สร้างอนาคตที่ดำเนินการคำนวณหลังจากความล่าช้า
ตรวจสอบให้แน่ใจว่าได้จัด import "dart:async";
แพคเกจเพื่อเริ่มโปรแกรมที่จะใช้ Future.delayed
Future.delayed(Duration(seconds: 5), () {
print(" This line is execute after 5 seconds");
});
เพียงแค่ออกจากที่นี่ข้อมูลโค้ดที่ทุกคนกำลังมองหา:
Future.delayed(Duration(milliseconds: 100), () {
// Do something
});
import 'dart:async';
Timer timer;
void autoPress(){
timer = new Timer(const Duration(seconds:2),(){
print("This line will print after two seconds");
});
}
autoPress();
รอ Future.delayed (ระยะเวลา (มิลลิวินาที: 1,000));