Sobes.tech
Middle

Mis on Future-konstruktorid Flutteris ja kuidas neid kasutada?

sobes.tech AI

Vastus AI-lt

Flutteri Future-konstruktorid kasutatakse Future objektide loomiseks, mis esindavad asünkroonse operatsiooni tulemust, mis võib tulevikus toimuda. Need aitavad hallata asünkroonse koodi täitmise voogu:

Peamised konstruktorid:

  • Future(): Loob Future, mis täidetakse pärast praeguse mikrotöö lõpetamist. Kasulik plaanides ülesandeid pärast praeguse sündmuste tsükli lõppu.

    Future(() {
      // Asünkroonne operatsioon
      print('See käivitub pärast praegust mikrotööd.');
    });
    
  • Future.delayed(Duration duration, [FutureOr<T> computation()]): Loob Future, mis täidetakse pärast määratud viivitust. computation on valikuline funktsioon, mis täidetakse pärast viivitust ja tagastab Future väärtuse.

    Future.delayed(Duration seconds: 2), () {
      print('See käivitub pärast 2 sekundit.');
    });
    
  • Future.value([FutureOr<T>? value]): Loob Future, mis on juba lõpetatud määratud väärtusega. Kui väärtus on teine Future, siis see ootab selle lõpetamist.

    Future<int>.value(123).then((value) => print('Väärtus on: $value'));
    
  • Future.error(Object error, [StackTrace? stackTrace]): Loob Future, mis on juba lõpetatud määratud veaga.

    Future.error('Midagi läks valesti').catchError((error) => print('Viga: $error'));
    
  • Future.sync(FutureOr<T> computation()): Loob Future, mis täidab arvutuse sünkronselt kohe. Kui arvutus tagastab Future, siis see ootab selle lõpetamist.

    Future.sync(() {
      print('See töötab sünkronselt.');
      return 456;
    }).then((value) => print('Sünkrone väärtus: $value'));
    

Kasutamine then, catchError ja whenComplete tulemuse töötlemiseks:

Future.delayed(Duration seconds: 1), () => 'Tere, maailm!')
    .then((result) {
      // Täidetakse edukalt lõpetamisel
      print(result);
    })
    .catchError((error) {
      // Täidetakse vea korral
      print('Viga: $error');
    })
    .whenComplete(() {
      // Täidetakse sõltumata edukusest või veast
      print('Future lõpetas.');
    });