• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Flutter - Pobieranie danych z Firebase i tworzenie listy

0 głosów
624 wizyt
pytanie zadane 21 grudnia 2021 w Android, Swift, Symbian przez Nerez Użytkownik (970 p.)

Cześć. Ostatnio zacząłem robić projekt we Flutterze. Chciałbym zrobić aplikację do kontrolowania domu zdalnie. Wymyśliłem już, że będę ją kontrolować poprzez baze Firebase Realtime db. Do teraz nawet jakoś mi szło, ale w najważniejszym momencie się zgubiłem. Mianowicie potrzebuję pobierać dane z wyżej wspomnianej bazy, następnie tworzyć z nich listę oraz wyświetlać na ekranie w StaggeredGridView. Chciałbym również móc kontrolować stan lampki oraz w przyszłości jej jasność. 

W tym momencie udało mi się utworzyć taki model:

import 'package:firebase_database/firebase_database.dart';

class ApplianceBoxModel {
  ApplianceBoxModel({
    this.id,
    this.name,
    this.state,
    this.wifiSsid,
  });

  String id;
  String name;
  bool state;
  String wifiSsid;

  ApplianceBoxModel.fromSnapshot(DataSnapshot snapshot)
      : id = snapshot.key,
        name = snapshot.value['name'],
        state = snapshot.value['state'],
        wifiSsid = snapshot.value['wifi_ssid'];

  toJson() {
    return {
      "name": name,
      "state": state,
      "wifi_ssid": wifiSsid,
    };
  }
}

No i tutaj się pogubiłem. W jaki sposób mogę ściągać dane do tej listy?

 

Do tej pory używałem "stałej" listy:

  static List<ApplianceBoxModel> getItems() {
    return [
      ApplianceBoxModel(
        name: 'Lampka_1',
        state: false,
      ),
      ApplianceBoxModel(
        name: 'Lampka_2',
        state: false,
      ),
      ApplianceBoxModel(
        name: 'Lampka_3',
        state: false,
      ),
      ApplianceBoxModel(
        name: 'Lampka_4',
        state: false,
      ),
      ApplianceBoxModel(
        name: 'Lampka_5',
        state: false,
      ),
      ApplianceBoxModel(
        name: 'Lampka_6',
        state: false,
      ),
    ];
  }

grid_view.dart

class MyGridView extends StatefulWidget {
  @override
  _MyGridViewState createState() => _MyGridViewState();
}

class _MyGridViewState extends State<MyGridView> {
  List<ApplianceBoxModel> applianceBoxModel = Utils.getItems();
  bool zmienna = false;

  @override
  Widget build(BuildContext context) {
    final DatabaseReference _dbref =
        FirebaseDatabase.instance.reference().child("testowe");
    return Container(
        margin: EdgeInsets.fromLTRB(18, 20, 18, 18),
        child: StreamBuilder(
          stream: _dbref.onValue,
          builder: (context, snapshot) {
            if (snapshot.hasData &&
                !snapshot.hasError &&
                snapshot.data.snapshot.value != null) {
              print("DATA: ${snapshot.data.snapshot.value.toString()}");
              //_dbref.push().set({"name": "janek", "surname": "kowalski"});
            }

            return Container(
              child: StaggeredGridView.countBuilder(
                physics: BouncingScrollPhysics(),
                crossAxisCount: 3,
                itemCount: applianceBoxModel.length,
                itemBuilder: (BuildContext context, int index) {
                  return ApplianceBoxState(
                    applianceBoxModel: applianceBoxModel[index],
                    onDeviceCardClick: () {},
                    isSwitched: zmienna,
                  );
                },
                staggeredTileBuilder: (int index) =>
                    new StaggeredTile.extent(1, 120),
                mainAxisSpacing: 15,
                crossAxisSpacing: 15,
              ),
            );
          },
        ));
  }
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
0 odpowiedzi 751 wizyt
0 głosów
1 odpowiedź 1,606 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez SzymonPJ Użytkownik (940 p.)
0 głosów
0 odpowiedzi 591 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez jisho Nowicjusz (120 p.)

93,758 zapytań

142,716 odpowiedzi

323,363 komentarzy

63,355 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...