Sobes.tech
Junior — Middle

Ar galėtumėte pateikti pavyzdį, kaip savo projekte naudojote FutureBuilder widget'ą?

sobes.tech AI

Atsakymas iš AI

Viename iš mano projektų aš naudoju FutureBuilder, kad asinchroniškai įkeltų duomenis iš serverio ir juos parodytų naudotojo sąsajoje. Pavyzdžiui, įkeliant naudotojų sąrašą iš 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('Nepavyko įkelti naudotojų');
  }
}

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('Klaida: \\${snapshot.error}');
      } else if (snapshot.hasData) {
        return ListView(
          children: snapshot.data!.map((user) => ListTile(title: Text(user.name))).toList(),
        );
      } else {
        return Text('Duomenų nėra');
      }
    },
  );
}

Šis požiūris leidžia patogiai valdyti įkėlimo būsenas ir rodyti UI priklausomai nuo asinchroninės operacijos rezultato.