• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
392 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 549 wizyt
0 głosów
1 odpowiedź 1,116 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez SzymonPJ Użytkownik (940 p.)
0 głosów
0 odpowiedzi 519 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez jisho Nowicjusz (120 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,667 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...