【问题标题】:Flutter How can I show value of array from a arrayFlutter 如何从数组中显示数组的值
【发布时间】:2020-12-25 01:13:03
【问题描述】:

Flutter 如何显示数组的数组数据。

我的数据是这样的

I/flutter ( 7557): {count: 1, 
records: [{
 cnic: 42501-0978008-5,
 name: abc 
 family_members: [{
  gender: F, 
  name: Dua Batool, 
  age: 8, 
  relationship: Daughter
}, 
{
  gender: M, 
  name: Shayan, 
  age: 9, 
  relationship: Son
}
]}]}

我需要做的是打印家庭成员数组的名称。

我的代码是这样的

 Future<List> doSomeAsyncStuff() async {

    final storage = new FlutterSecureStorage();
    String value = await storage.read(key: 'Cnic');
    print(value);

    String url = 'http://api.igiinsurance.com.pk:8888/insurance_IgiGen/insurance-api/get_company_employee.php?offset=0&limit=1&cnic=${value}' ;
    final msg = jsonEncode({"cnic": value});
    Map<String,String> headers = {'Content-Type':'application/json'};

    String token = value;
    final response = await http.get(url);

    var Data = json.decode(response.body);
    print(Data);
  }

它的打印数据值,正如我在问题的上方向您展示的那样,我需要打印家庭成员的姓名。我知道这是个愚蠢的问题,但我无法打印 Familymembers 数组的名称

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    你可以这样做:

    Future<List> doSomeAsyncStuff() async {
    
        final storage = new FlutterSecureStorage();
        String value = await storage.read(key: 'Cnic');
        print(value);
    
        String url = 'http://api.igiinsurance.com.pk:8888/insurance_IgiGen/insurance-api/get_company_employee.php?offset=0&limit=1&cnic=${value}' ;
        final msg = jsonEncode({"cnic": value});
        Map<String,String> headers = {'Content-Type':'application/json'};
    
        String token = value;
        final response = await http.get(url);
    
        var data = json.decode(response.body);
        print(data);
    
        var familyMembers = data["records"][0]["familyMembers"]
        print(familyMembers);
        for (var familyMember in familyMembers){ //prints the name of each family member
                var familyMemberName = familyMember["name"];
                print(familyMemberName);
      }
    

    如果您的记录列表中有多个项目,您可以使用循环并打印每个家庭成员:

    Future<List> doSomeAsyncStuff() async {
    
        final storage = new FlutterSecureStorage();
        String value = await storage.read(key: 'Cnic');
        print(value);
    
        String url = 'http://api.igiinsurance.com.pk:8888/insurance_IgiGen/insurance-api/get_company_employee.php?offset=0&limit=1&cnic=${value}' ;
        final msg = jsonEncode({"cnic": value});
        Map<String,String> headers = {'Content-Type':'application/json'};
    
        String token = value;
        final response = await http.get(url);
    
        var data = json.decode(response.body);
        print(data);
        var recordsList = data["records"];
        for (var record in recordsList){
            var familyMembers = record["familyMembers"]
            print(familyMembers);
            for (var familyMember in familyMembers){ //prints the name of each family member
                var familyMemberName = familyMember["name"];
                print(familyMemberName);
        }
      }
    

    【讨论】:

    • 非常感谢第一个工作正常。你能再讲一件事,我怎样才能在文本小部件中显示这些名称?
    • 不客气。您可以在函数中创建一个列表并将家庭成员的姓名添加到其中。然后返回列表并将返回值的项目用作 Text 小部件值。我不知道你想如何显示它们,但如果你想显示所有这些,请使用带有返回列表的 ListView 小部件
    • 使用 FutureBuilder
    • 是的,您还可以使用 FutureBuilder 并从其构建器方法返回一个 Text 小部件
    【解决方案2】:

    没有什么可感到愚蠢的。我们是来学习的。为了回答您的问题,我使用的是forEach()。它的作用是遍历您的数据,并从数组中获取值

    你的代码只有这么多

      // mapping your records array
      Data['records'].forEach((item){
        // mapping your family_members array
        item['family_members'].forEach((nestedItem){
          print(nestedItem['name']);
        });
      });
    

    让我们在您的 dart 代码方法中展示这一点。你会得到更多的想法

    void main() {
      Map data = {
      'count': 1, 
      'records': [
        {
          'cnic': 42501-0978008-5,
          'name': 'abc' ,
          'family_members': [
            {
              'gender': 'F', 
              'name': 'Dua Batool', 
              'age': 8, 
              'relationship': 'Daughter'
            }, 
            {
              'gender': 'M', 
              'name': 'Shayan', 
              'age': 9, 
              'relationship': 'Son'
            }
          ]
        }           
      ]};
      
      // mapping your records array
      data['records'].forEach((item){
        // mapping your family_members array
        item['family_members'].forEach((nestedItem){
          print(nestedItem['name']);
        });
      });
      
    }
    

    输出

    Dua Batool
    Shayan
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-21
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-24
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多