• 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
50 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 154 wizyt
0 głosów
1 odpowiedź 228 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez SzymonPJ Użytkownik (940 p.)
0 głosów
0 odpowiedzi 50 wizyt
pytanie zadane 17 maja 2021 w Android, Swift, Symbian przez jisho Nowicjusz (120 p.)

88,311 zapytań

136,904 odpowiedzi

305,517 komentarzy

58,593 pasjonatów

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...