【问题标题】:Convert List<List<dynamic>> to ArrayList in Flutter在 Flutter 中将 List<List<dynamic>> 转换为 ArrayList
【发布时间】:2021-05-27 15:41:30
【问题描述】:

我是 Flutter 新手,我想将 List 转换为 ArrayList。 这是我当前的列表输出

数据 [[数量,Desc,单价,总价],[1,牛仔裤,106.0,106.0],[2,衬衫,24.38,24.38],[3,Demo Hoodie / XL,106.0,318.0],[4 , Demo Hoodie / 2XL, 106.0, 106.0], [1, Jeans-short, 106.0, 106.0], [5, Shirt-Long, 24.38, 24.38], [6, Demo Hoodie-Lg / XL, 106.0, 318.0], [4, Demo Hoodie-Mg / 2XL, 106.0, 106.0], [3, Jeans-RG, 106.0, 106.0], [4, Shirt-MG, 24.38, 24.38], [7, Demo Hoodie-TY / XL, 106.0 , 318.0], [9, Demo Hoodie-Levis / 2XL, 106.0, 106.0], [1, Demo Hoodie-J&J / XL, 106.0, 318.0], [2, Demo Hoodie-M&J / 2XL, 106.0, 106.0], [ 7、Temo Hoodie-TY/XL、106.0、318.0]、[5、Zemo Hoodie-Levis/2XL、106.0、106.0]、[6、Aemo Hoodie-J&J/XL、106.0、318.0]、[2、Bemo Hoodie- M&J / 2XL, 106.0, 106.0], [9, Temo Hoodie-TY / XL, 106.0, 318.0], [1, Zemo Hoodie-Levis / 2XL, 106.0, 106.0], [2, Aemo Hoodie-J&J / XL, 106.0 , 318.0], [7, Bemo Hoodie-M&J / 2XL, 106.0, 106.0]]

我想在flutter中将该数组列表添加到recyclerView中。

提前致谢。

【问题讨论】:

    标签: arrays list flutter arraylist


    【解决方案1】:

    您可以使用dart:convertjsonDecode,但这将不起作用,除非您从中删除字符串以便为每个单词添加单引号/双引号。

    或者您可以通过拆分字符串来手动转换它。

    import 'dart:core';
    
    main(){
      
     String data = "[[Qty, Desc, Unitprice, totalprice], [1, Jeans, 106.0, 106.0], [2, Shirt, 24.38, 24.38], [3, Demo Hoodie / XL, 106.0, 318.0], [4, Demo Hoodie / 2XL, 106.0, 106.0], [1, Jeans-short, 106.0, 106.0], [5, Shirt-Long, 24.38, 24.38], [6, Demo Hoodie-Lg / XL, 106.0, 318.0], [4, Demo Hoodie-Mg / 2XL, 106.0, 106.0], [3, Jeans-RG, 106.0, 106.0], [4, Shirt-MG, 24.38, 24.38], [7, Demo Hoodie-TY / XL, 106.0, 318.0], [9, Demo Hoodie-Levis / 2XL, 106.0, 106.0], [1, Demo Hoodie-J&J / XL, 106.0, 318.0], [2, Demo Hoodie-M&J / 2XL, 106.0, 106.0], [7, Temo Hoodie-TY / XL, 106.0, 318.0], [5, Zemo Hoodie-Levis / 2XL, 106.0, 106.0], [6, Aemo Hoodie-J&J / XL, 106.0, 318.0], [2, Bemo Hoodie-M&J / 2XL, 106.0, 106.0], [9, Temo Hoodie-TY / XL, 106.0, 318.0], [1, Zemo Hoodie-Levis / 2XL, 106.0, 106.0], [2, Aemo Hoodie-J&J / XL, 106.0, 318.0], [7, Bemo Hoodie-M&J / 2XL, 106.0, 106.0]]";
      
      
      List<String> splittedData = data.substring(2,data.length-1).split("], [");
    
    
      List<List<String>> formattedData = [];
    
      splittedData.forEach( (stringVal) => formattedData.add(stringVal.split(', ')));
    
      print(formattedData[0][0]);
      
    
    }
    

    您运行此代码dartpad.dev 来检查其输出。

    您可以通过使用正则表达式来解析数据而不是使用字符串拆分数据来进一步改进这一点。这将是数据本身不一致并且其中包含单引号/双引号和方括号的情况。

    【讨论】:

    • 谢谢你的回答帮助了我。通过结合两个答案,我找到了我的解决方案。 XD
    • 请为答案投票并接受。这对我改善个人资料有很大帮助。谢谢。
    【解决方案2】:
    • 您应该将对象用于这种用途,例如 List 而不是 List

    • Flutter 中没有 RecyclerView,它是 ListView 小部件。

    • 你的字符串应该在引号(“”)之间

    这是一个使用 ListView 构建器的示例:

    import 'package:flutter/material.dart';
    
    void main() => runApp(MyApp());
    
    class MyApp extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          debugShowCheckedModeBanner: false,
          home: MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    
    class MyHomePage extends StatefulWidget {
      MyHomePage({Key key, this.title}) : super(key: key);
    
      final String title;
    
      @override
      _MyHomePageState createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      
      var list = [["data1", "data2"], ["data1","data2"],["data1","data2"]];
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: Center(
            child: ListView.builder(
              itemCount: list.length,
              itemBuilder: (context, index) {
                return Container(
                  color: Colors.grey[200],
                  padding: EdgeInsets.symmetric(vertical: 10),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: List.generate(
                      list[index].length,
                      (index2) {
                        return Text(list[index][index2]);
                      }
                    )
                  ),
                );
              }
            )
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-17
      • 1970-01-01
      • 2020-08-03
      • 2021-05-20
      • 2020-09-04
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2021-03-29
      相关资源
      最近更新 更多