Sobes.tech
Junior — Middle

Μπορείτε να δώσετε ένα παράδειγμα χρήσης του widget FutureBuilder στο έργο σας;

sobes.tech AI

Απάντηση από AI

Σε ένα από τα έργα μου, χρησιμοποίησα το FutureBuilder για να φορτώσω δεδομένα ασύγχρονα από τον διακομιστή και να τα εμφανίσω στη διεπαφή χρήστη. Για παράδειγμα, κατά τη φόρτωση μιας λίστας χρηστών από ένα API:

Future<List<User>> fetchUsers() async {
  final response = await http.get(Uri.parse('https://api.example.com/users'));
  if (response.statusCode == 200) {
    return parseUsers(response.body);
  } else {
    throw Exception('Αποτυχία φόρτωσης χρηστών');
  }
}

Widget build(BuildContext context) {
  return FutureBuilder<List<User>>(
    future: fetchUsers(),
    builder: (context, snapshot) {
      if (snapshot.connectionState == ConnectionState.waiting) {
        return CircularProgressIndicator();
      } else if (snapshot.hasError) {
        return Text('Σφάλμα: \\${snapshot.error}');
      } else if (snapshot.hasData) {
        return ListView(
          children: snapshot.data!.map((user) => ListTile(title: Text(user.name))).toList(),
        );
      } else {
        return Text('Δεν υπάρχουν δεδομένα');
      }
    },
  );
}

Αυτή η προσέγγιση επιτρέπει τη διαχείριση εύκολα των καταστάσεων φόρτωσης και την εμφάνιση του UI ανάλογα με το αποτέλεσμα της ασύγχρονης λειτουργίας.