首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >颤振火焰数据库initState问题

颤振火焰数据库initState问题
EN

Stack Overflow用户
提问于 2018-09-13 16:56:47
回答 1查看 1.2K关注 0票数 0

我的应用程序有一个对象公司,它有一个属性shopList。鞋匠将从void initState()中的firebase数据库中获取数据。

代码语言:javascript
运行
复制
Company(name: 'Storm',
      about: 'xxxxxxxxxxxx',
      backdropPhoto: 'assets/hk.jpg',
      shopList: [],
      location: 'HK',
      logo: 'assets/logo.png',
      president: 'Grand Production House');

商店老板应该有5家不同的商店,但我不知道为什么会有5家有相同数据的商店。

代码:

代码语言:javascript
运行
复制
class CompanyDetailsPage extends StatefulWidget {

    CompanyDetailsPage(
      {@required AnimationController controller, this.context})
      : animation = new CompanyDetsIntroAnimation(controller);

  final BuildContext context;

  final CompanyDetsIntroAnimation animation;
  @override
  _CompanyDetailsPageState createState() => _CompanyDetailsPageState();
}

class _CompanyDetailsPageState extends State<CompanyDetailsPage> {

  Shop shopItems;

  Company storm = Company(
      name: 'Storm',
      about: 'xxxxxxxxxxxx',
      backdropPhoto: 'assets/hk.jpg',
      shopList: [],
      location: 'HK',
      logo: 'assets/logo.png',
      president: 'Grand Production House');

  DatabaseReference databaseReference = FirebaseDatabase.instance.reference();

  @override
  void initState() {
    super.initState();

    shopItems = Shop();

    databaseReference.child('HK').once().then((DataSnapshot snapshot) {
      Map uid = snapshot.value;
      uid.forEach((k,v) {
        Map shopMap = v['Shop'];

        shopMap.forEach((sk,sv) {
          shopItems.key = sk;
          shopItems.shopName = sv["ShopName"];
          shopItems.address = sv["ShopAddress"];
          shopItems.tel = sv["ShopTel"];
          shopItems.thumbnail = sv["Thumbnail"];


          debugPrint(shopItems.address);

          storm.shopList.add(shopItems);

          debugPrint(shopItems.key);
        });

      });

      for (int i = 0; i < storm.shopList.length; i++) {

        debugPrint("Username: ${storm.shopList[i].address }, User Id: ${storm.shopList[i].key}");

      }
    });
  }

来自控制台的结果:

  • 同步文件到设备iPhone X.
  • 颤振:-LM3JFMq5y9fNVA431QW
  • 颤振:-LMHR9YQFqgKlnFArwEN
  • 颤振:-LM3JH8KMha3aeN-YEq5
  • 颤振:-LM3JJTFda0c3qKaKEaL
  • 颤振:-LMIaUIBOhj1k6pjj9eY
  • 颤振: ShopAddress: bbbbbb,ShopKey:-LMIaUIBOhj1k6pjj9eY
  • 颤振: ShopAddress: bbbbbb,ShopKey:-LMIaUIBOhj1k6pjj9eY
  • 颤振: ShopAddress: bbbbbb,ShopKey:-LMIaUIBOhj1k6pjj9eY
  • 颤振: ShopAddress: bbbbbb,ShopKey:-LMIaUIBOhj1k6pjj9eY
  • 颤振: ShopAddress: bbbbbb,ShopKey:-LMIaUIBOhj1k6pjj9eY
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-14 12:38:43

我认为问题可能在于您正在实例化shopItems = Shop();的位置。

试着把它从那里移开然后这样做

代码语言:javascript
运行
复制
shopMap.forEach((sk,sv) {
//Create the instance here
  shopItems = Shop();

  shopItems.key = sk;
  shopItems.shopName = sv["ShopName"];
  shopItems.address = sv["ShopAddress"];
  shopItems.tel = sv["ShopTel"];
  shopItems.thumbnail = sv["Thumbnail"];


  debugPrint(shopItems.address);

  storm.shopList.add(shopItems);

  debugPrint(shopItems.key);
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52318434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档