Sobes.tech
Middle

Kas ir Future konstruktoru Flutter un kā tos izmantot?

sobes.tech AI

Atbilde no AI

Flutter konstructori Future tiek ir izmanto, lai izveidotu Future objektus, kas pārstāv asinhronās operācijas rezultātu, kas var tikt izpildīts nākotnē. Tie palīdz pārvaldīt asinhronā koda izpildes plūsmu:

Galvenie konstruktori:

  • Future(): Izveido Future, kas tiks izpildīts pēc pašreizējās mikrouzdevuma pabeigšanas. Noderīgs plānojot uzdevumus pēc pašreizējās notikumu cikla pabeigšanas.

    Future(() {
      // Asinhroniska operācija
      print('Šis tiek izpildīts pēc pašreizējās mikrouzdevuma.');
    });
    
  • Future.delayed(Duration duration, [FutureOr<T> computation()]): Izveido Future, kas tiks izpildīts pēc norādītā aizkaves. computation ir izvēles funkcija, kas tiek izpildīta pēc aizkaves un atgriež Future vērtību.

    Future.delayed(Duration seconds: 2), () {
      print('Šis tiek izpildīts pēc 2 sekundēm.');
    });
    
  • Future.value([FutureOr<T>? value]): Izveido Future, kas jau ir pabeigts ar norādīto vērtību. Ja vērtība ir cits Future, tas gaidīs tā pabeigšanu.

    Future<int>.value(123).then((value) => print('Vērtība ir: $value'));
    
  • Future.error(Object error, [StackTrace? stackTrace]): Izveido Future, kas jau ir pabeigts ar norādītu kļūdu.

    Future.error('Kaut kas nogāja greizi').catchError((error) => print('Kļūda: $error'));
    
  • Future.sync(FutureOr<T> computation()): Izveido Future, kas veic aprēķinu sinhroni uzreiz. Ja aprēķins atgriež Future, tas gaidīs tā pabeigšanu.

    Future.sync(() {
      print('Šis darbojas sinhroni.');
      return 456;
    }).then((value) => print('Sinhronā vērtība: $value'));
    

Lietošana then, catchError un whenComplete rezultāta apstrādei:

Future.delayed(Duration seconds: 1), () => 'Sveiki, pasaule!')
    .then((result) {
      // Veic, kad ir veiksmīgi pabeigts
      print(result);
    })
    .catchError((error) {
      // Veic, ja ir kļūda
      print('Radās kļūda: $error');
    })
    .whenComplete(() {
      // Veic neatkarīgi no panākumiem vai kļūdām
      print('Future ir pabeigts.');
    });