0

我正在处理来自 Firebase RTDB 的数据。虽然我已经通过这篇文章成功地从 Firestore 获取了全部数据:

  // GETTING ALL THE DATA FROM RTDB - MAP
  void readSchool() async {
    await realtime.once().then((DataSnapshot snapshot) {
      setState(() {
        schoolList = snapshot.value;
      });
    });
    print('Data: $schoolList');
  }

这是我的 RTDB 数据结构:

实时数据库

我从 RTDB 得到的 Map 是嵌套 Map(Map inside Map)。

    Data: 
{
Kỹ thuật và Công nghệ: 
{
 color1: 0xfffaaca8, color2: 0xffb06ab3, 
 description: Nghiên cứu và sáng tạo các sản phẩm công nghệ cao,...,
   oisp: {
      imgcard: imgurl1, 
      category: KỸ THUẬT VÀ CÔNG NGHỆ, 
      title: Quốc tế Đại học Bách khoa TP.HCM, 
      location_s: Quận 10, Thành phố Hồ Chí Minh
   }
}, 

Kinh tế và Quản lý: 
{
 color1: 0xffec6f66, color2: 0xfff3a183, 
 description: Tổ chức điều phối các hoạt động kinh tế, quản lý, tài chính,..., 
 ueh: 
   {
    imgcard: imgurl2, 
    category: KINH TẾ VÀ QUẢN LÝ, 
    title: Đại học Kinh tế TP.HCM, 
    location_s: Quận 3, Thành phố Hồ Chí Minh}
   }
}

显然,使用正常语法(例如)访问特定数据 schoolList['Kỹ thuật và Công nghệ']['oisp']不会触发错误分析调用,但也不会返回值。

请帮助我访问从 RTDB 检索到的数据中的特定数据。谢谢!

4

1 回答 1

0

我正在尝试在这里创建一些名为 HomeCard 的对象:

  // LIST OF ALL SCHOOL
  Map schoolList;

  // LIST OF FEATURED SCHOOL FROM FEATURED/RECOMMEND
  List featuredSchool = [];

  // LIST OF CATEGORIES FROM INFORMATION CATEGORIZE/LIST
  List categories = [];

  void homeCard() {
for (String category in categories) {
  // ADD TO LIST
  for (String school in featuredSchool) {
    if (schoolList[category][school] as String != null) {
        featuredCard.add(
          // CARD TEMPLATE
          HomeCard(
            // FROM UNIVERSITY/INFORMATION/SCHOOL/[RECOMMENDED SCHOOL]/'TITLE'
            name: schoolList[category][school]['title'] as String,

            // FROM UNIVERSITY/INFORMATION/SCHOOL/[RECOMMENDED SCHOOL]/'CATEGORY'
            category: schoolList[category][school]['category'] as String,

            // FROM UNIVERSITY/INFORMATION/SCHOOL/[RECOMMENDED SCHOOL]/'IMGCARD'
            networkImage:
                NetworkImage(schoolList[category][school]['imgcard'] as String),

            // CARD FUNCTION
            function: () {},
          ),
        );
        String name = schoolList[category][school]['title'] as String;
        print(name);
    }
  }
}

}

但它输出一个空列表

于 2021-04-09T04:35:30.300 回答