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 ανάλογα με το αποτέλεσμα της ασύγχρονης λειτουργίας.