Ինչ է Flutter-ի Future կոնստրուկտորները և ինչպես օգտագործել դրանք։
sobes.tech AI
Պատասխան AI-ից
Flutter- ում Future կոնստրուկտորները օգտագործվում են Future օբյեկտներ ստեղծելու համար, որոնք ներկայացնում են ասինխրոնային օպերացիայի արդյունքը, որը կարող է կատարվել ապագայում: Նրանք օգնում են կառավարել ասինխրոնային կոդի կատարման հոսքը:
Հիմնական կոնստրուկտորները:
-
Future(): Ստեղծում է Future, որը կիրականացվի հետո ընթացիկ միկրոաշխատանքի ավարտից հետո: Օգտակար է ծրագրերի պլանավորման համար, որոնք կատարվում են ընթացիկ իրադարձությունների ցիկլի ավարտից հետո:
Future(() { // Ասինխրոնային օպերացիա print('Այսը կատարվում է հետո ընթացիկ միկրոաշխատանքի։'); }); -
Future.delayed(Duration duration, [FutureOr<T> computation()]): Ստեղծում է Future, որը կատարվելու է նշված ուշացումից հետո:
computation- դա պարտադիր չէ ֆունկցիա, որը կատարվում է ուշացման հետո և վերադարձնում է Future արժեք:Future.delayed(Duration seconds: 2), () { print('Այսը կատարվում է 2 վայրկյան հետո։'); }); -
Future.value([FutureOr<T>? value]): Ստեղծում է Future, որը արդեն ավարտված է նշված արժեքով: Եթե արժեքը այլ
Futureէ, այս կոնստրուկտորը կսպասի նրա ավարտին:Future<int>.value(123).then((value) => print('Արժեքը: $value')); -
Future.error(Object error, [StackTrace? stackTrace]): Ստեղծում է Future, որը արդեն ավարտված է նշված սխալով:
Future.error('Ինչ-որ բան սխալվեց').catchError((error) => print('Սխալ: $error')); -
Future.sync(FutureOr<T> computation()): Ստեղծում է Future, որը իրականացնում է հաշվարկը սինխրոնապես անմիջապես: Եթե հաշվարկը վերադարձնում է Future, այս կոնստրուկտորը կսպասի նրա ավարտին:
Future.sync(() { print('Սա սինխրոն է։'); return 456; }).then((value) => print('Սինխրոն արժեքը: $value'));
Օգտագործում then, catchError և whenComplete՝ արդյունքը մշակելու համար:
Future.delayed(Duration seconds: 1), () => 'Բարև, աշխարհ!')
.then((result) {
// Կատարվում է հաջող ավարտից հետո
print(result);
})
.catchError((error) {
// Կատարվում է սխալի դեպքում
print('Սխալ է տեղի ունեցել: $error');
})
.whenComplete(() {
// Կատարվում է անկախ հաջողությունից կամ սխալից
print('Future ավարտվեց։');
});