【问题标题】:Flutter data class created by firebase database由 firebase 数据库创建的 Flutter 数据类
【发布时间】:2019-02-18 01:38:24
【问题描述】:

我可以知道如何在flutter中使用firebase数据库创建一个数据类,并且数据将立即加载到应用程序的第一页吗?

    import 'package:dnow/model/company.dart';
    import 'package:firebase_database/firebase_database.dart';

    class RepoData {

      static final Company bawp = new Company(
          name: 'King',
          about: 'Selling Food',
          backdropPhoto: 'assets/hk.jpg',

          shop: <Shop>[
            new Shop(
                shopName: 'ABC',
                thumbnail: 'assets/daofang.png',
                tel: "88776655",
                address: '23 Daisy street, Sydney'),

            new Shop(
                shopName: 'KKK',
                thumbnail: 'assets/fefew.png',
                tel: "88776655",
                address: '131 Man street, Sydney'),


          ],
          location: 'Sydney',
          logo: 'assets/logo.png',
          president: 'Grand Production House');
    }


  [1]: https://i.stack.imgur.com/DV3X0.png

【问题讨论】:

  • @Sebastian 我认为 GPH 可能会问如何在 Flutter 中创建一个表示 JSON 数据的类,以便 Firebase SDK 自动将 JSON 属性映射到类的字段/属性中。据我所知,文档中的示例并未涵盖这一点(而且我现在也没有 Flutter 的示例)。
  • 哦,对了。我会尽力回答这个问题

标签: firebase firebase-realtime-database flutter


【解决方案1】:

假设这是你的类简化

Class Company {
 String name;
 String about;
 String backdropPhoto;
 String location;
 String logo;
 String president;
}

然后在您的应用程序的第一页中,您正在收听数据库并接收 一个 公司,类似这样的

database.reference().child('companies').once().then((DataSnapshot snapshot) {
   //todo: parse snapshot
});

在这里,您从数据库接收一个 DataSnapshot 对象。您需要做的是将 DataSnapshot 解析为您的 Company 类。为此,您需要在 Company 类中创建一个自定义构造函数,如下所示

import 'package:firebase_database/firebase_database.dart';

Class Company {
 String name;
 String about;
 String backdropPhoto;
 String location;
 String logo;
 String president;

 Company.fromDb(DataSnapshot data) {
  name = data['name'];
  about = data['about'];
  backdropPhoto = data['backdropPhoto'];
  location = data['location'];
  logo = data['logo'];
  president = data['president'];
 }
}

最后,当你从 firebase 收到文档时,你会调用这个构造函数

database.reference().child('companies').once().then((DataSnapshot snapshot) {
    Company company = Company.fromDb(snapshot);
});

我只使用过 Firestore,但我认为这就是它的工作方式。 希望对你有帮助

【讨论】:

    猜你喜欢
    • 2020-07-03
    • 2021-10-16
    • 1970-01-01
    • 2022-08-05
    • 2020-08-13
    • 2021-04-15
    • 2022-11-09
    • 2021-01-06
    • 2021-07-30
    相关资源
    最近更新 更多