栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何遍历属于键值的对象数组-Flutter

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何遍历属于键值的对象数组-Flutter

我建议您在这种情况下使用数据类。

import 'package:flutter/material.dart';List<Anchor> _parseAnchors(Map<String, dynamic> map) {  final anchors = <Anchor>[];  for (var anchorMap in map['Anchors']) {    final anchor = Anchor.fromMap(anchorMap);    anchors.add(anchor);  }  return anchors;}class Anchor {  final int oId;  final String name;  final String acronym;  final List<DistributionCenter> distributionCenters;  const Anchor({    @required this.oId,    @required this.name,    @required this.acronym,    @required this.distributionCenters,  });  factory Anchor.fromMap(Map<String, dynamic> map) {    final distributionCenters = <DistributionCenter>[];    for (var distribution in map['DistributionCentres']) {      final distributionCenter = DistributionCenter.fromMap(distribution);      distributionCenters.add(distributionCenter);    }    return Anchor(      oId: map['Oid'] as int,      name: map['Name'] as String,      acronym: map['Acronym'] as String,      distributionCenters: distributionCenters,    );  }}class DistributionCenter {  final int id;  final String name;  final String address;  const DistributionCenter({    @required this.id,    @required this.name,    @required this.address,  });  factory DistributionCenter.fromMap(Map<String, dynamic> map) {    return DistributionCenter(      id: map['Oid'] as int,      name: map['Name'] as String,      address: map['Address'] as String,    );  }}class AnchorPage extends StatelessWidget {  // details page  final Anchor anchor;  @override  const AnchorPage({Key key, @required this.anchor}) : super(key: key);  Widget build(BuildContext context) {    return Scaffold(      body: Container(        child: Text(anchor.name),      ),    );  }}class AnchorsPage extends StatefulWidget {  const AnchorsPage({Key key}) : super(key: key);  @override  _AnchorsPageState createState() => _AnchorsPageState();}class _AnchorsPageState extends State<AnchorsPage> {  static const anchorsMap = {    "Anchors": [      {        "Oid": 11,        "Name": "MAIZE ASSOCIATION OF NIGERIA",        "Acronym": "MAAN",        "DistributionCentres": [          { "Oid": 11, "Name": "Logo Centre (Zone A)", "Address": "Private Warehouse, Ugba, Logo LGA"          },          { "Oid": 12, "Name": "Makurdi Centre (Zone B)", "Address": "Ministry of Agric, Makurdi "          },          { "Oid": 13, "Name": "Oturkpo Centre (Zone C)", "Address": "Private Warehouse, Oturkpo"          },          { "Oid": 15, "Name": "Borno MAAN centre", "Address": "Bolori Store, Flavour Mill, Behind Vita Foam, Maiduguri"          },          { "Oid": 18, "Name": "Bauchi Centre", "Address": "BASPD, Dass Road, Bauchi"          }        ],        "NoOfDistributionCentres": 5      },      {        "Oid": 2,        "Name": "MAIZE GROWERS, PROCESSORS AND MARKETERS ASSOCIATION OF NIGERIA",        "Acronym": "MAGPAMAN",        "DistributionCentres": [          { "Oid": 2, "Name": "Guma Centre", "Address":     "P 32, 2nd Avenue Federal Housing Estate, N/Bank, Makurdi"          },          { "Oid": 3, "Name": "Logo Centre", "Address": "Terhemen Akema Storage Facility, Ugba, Logo LGA"          },          { "Oid": 5, "Name": "Oturkpo Centre", "Address": "Grain Store, Lower Benue Okele Project, Otukpo"          },          { "Oid": 6, "Name": "Gboko Centre", "Address":     "K3 New Road, Opposite former coca cola plant. Solar Schools Street,     Gboko"          },          { "Oid": 7, "Name": "Gwer East Centre", "Address":     "Ahua Shardye's Warehouse, Behind Sylkan Filling Station, Ikpayongo ,   G/East LGA"          },          { "Oid": 8, "Name": "Kwande Centre", "Address": "KM 3, Adagi Road, Adikpo"          },          { "Oid": 9, "Name": "Ohimini Centre", "Address": "Ajoga Oglewu, Ohimini"          },          { "Oid": 10, "Name": "Oju Centre", "Address": "Behind Town Hall, Ohuhu owo, Oju LGA"          }        ],        "NoOfDistributionCentres": 8      }    ],  };  final _anchors = <Anchor>[];  @override  Widget build(BuildContext context) {    // now you can use the anchors list here    return Scaffold(      body: ListView.builder(        itemCount: _anchors.length,        itemBuilder: (context, index) {          final anchor = _anchors[index];          return ListTile( title: Text(anchor.name), subtitle: Text(anchor.acronym), trailing: Text(anchor.distributionCenters?.length?.toString()), onTap: () {   Navigator.push(     context,     MaterialPageRoute(       builder: (context) => AnchorPage(anchor: anchor),     ),   ); },          );        },      ),    );  }  @override  void initState() {    super.initState();    final anchors = _parseAnchors(anchorsMap);    _anchors.addAll(anchors);  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413822.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号