Sobes.tech
Middle

Mi a Future konstruktorok Flutterben, és hogyan kell őket használni?

sobes.tech MI

Válasz az MI-től

A Flutterben a Future konstruktorokat arra használják, hogy Future objektumokat hozzanak létre, amelyek egy aszinkron művelet eredményét képviselik, amely a jövőben befejeződhet. Segítenek az aszinkron kód végrehajtási folyamatának kezelésében.

Fő konstruktorok:

  • Future(): Létrehoz egy Future-t, amely a jelenlegi mikrofeladat befejezése után fog végrehajtódni. Hasznos a feladatok ütemezéséhez a jelenlegi eseményciklus után.

    Future(() {
      // Aszinkron művelet
      print('Ez a jelenlegi mikrofeladat után fut.');
    });
    
  • Future.delayed(Duration duration, [FutureOr<T> computation()]): Létrehoz egy Future-t, amely a megadott késleltetés után fog végrehajtódni. A computation egy opcionális függvény, amely a késleltetés után fut és egy Future értéket ad vissza.

    Future.delayed(Duration(seconds: 2), () {
      print('Ez 2 másodperc múlva fut.');
    });
    
  • Future.value([FutureOr<T>? value]): Már befejezett Future-t hoz létre a megadott értékkel. Ha az érték egy másik Future, akkor ez a konstruktor várja annak befejezését.

    Future<int>.value(123).then((value) => print('Érték: $value'));
    
  • Future.error(Object error, [StackTrace? stackTrace]): Már befejezett Future-t hoz létre hibával.

    Future.error('Valami rosszul ment').catchError((error) => print('Hiba: $error'));
    
  • Future.sync(FutureOr<T> computation()): Szinkron módon azonnal végrehajtó Future-t hoz létre. Ha a számítás Future-et ad vissza, ez a konstruktor várja annak befejezését.

    Future.sync(() {
      print('Ez szinkron módon fut.');
      return 456;
    }).then((value) => print('Szinkron érték: $value'));
    

Az eredmény kezelése then, catchError és whenComplete segítségével:

Future.delayed(Duration(seconds: 1), () => 'Helló, Világ!')
    .then((result) {
      // Sikeres befejezés esetén
      print(result);
    })
    .catchError((error) {
      // Hiba esetén
      print('Hiba történt: $error');
    })
    .whenComplete(() {
      // Függetlenül a siker vagy hiba eredményétől
      print('Future befejeződött.');
    });