• 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

Object Storage Arubacloud
0 głosów
333 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 421 wizyt
0 głosów
1 odpowiedź 787 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez SzymonPJ Użytkownik (940 p.)
0 głosów
0 odpowiedzi 416 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez jisho Nowicjusz (120 p.)

92,654 zapytań

141,543 odpowiedzi

319,944 komentarzy

62,022 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...