如何将数据从JSON合并到Flutter中的小部件?

时间:2019-12-24 21:42:30

标签: json flutter dart

我尝试将资产中拥有的json中的数据传递给某些小部件,但由于json实际上是地图列表,因此我不知道如何操作。感谢您在这方面的帮助。我附上主要的小部件和json代码。在第一列中,“文本”和“图像”分别传递项目名和图像(资产/ $ {image +})。

在这种情况下,我需要知道如何转换数据,以便可以在小部件中使用它。

Swiper(
itemHeight: media.height * 0.4,
itemWidth: media.width * .6,
layout: SwiperLayout.TINDER,
itemCount: 39,

itemBuilder: (BuildContext context, int index){
  return Container(
    decoration: BoxDecoration(
      color: Colors.orange,
      border: Border.all(color: Color(0xFF858585)),
      borderRadius: BorderRadius.circular(20),
    ),
    child: Column(
      children: <Widget>[
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Text('Familia Arkani', style: TextStyle(fontSize: 18),),
        ),
        Padding(
          padding: const EdgeInsets.all(8.0),
          child: Image.asset('assets/arkani.png', height: 60, width: 60,),
        ),
        SizedBox(height: 20,),
        Row(
          mainAxisAlignment: MainAxisAlignment.spaceAround,

          children: <Widget>[
            Column(
              children: <Widget>[
                Image.asset('pray.png', height: 30, width: 30,),
                Padding(
                  padding: const EdgeInsets.only(top:5.0),
                  child: Text('Orar'),
                ),
                Switch(
                  value: isOrar,
                  onChanged: (value){
                    setState((){
                      isOrar = value;
                    });
                  },
                )
              ],

            ),
            Column(
              children: <Widget>[
                Image.asset('give.png', height: 30, width: 30,),
                Padding(
                  padding: const EdgeInsets.only(top:5.0),
                  child: Text('Ofrendar'),
                ),
                Switch(
                  value: isOfrendar,
                  onChanged: (value){
                    setState((){
                      isOfrendar = value;
                    });
                  },
                )
              ],
            ),
            Column(
              children: <Widget>[
                Image.asset('move.png', height: 30, width: 30,),
                Padding(
                  padding: const EdgeInsets.only(top:5.0),
                  child: Text('Movilizar'),
                ),
                Switch(
                  value: isMovilizar,
                  onChanged: (value){
                    setState((){
                      isMovilizar = value;
                    });
                  },
                )
              ],
            ),
          ],
        )
      ],
    ),
  );
},

control: new SwiperControl(),
),
  );
  }
}

这是JSON 我想将这些数据合并到一些小部件中。

[
  {
    "id": 1,
    "nombreProy": "Fam. Arkani", //aqui quiero añadir el dato nombreProy
   "image": "arkani",
   "lugar": "Asia del Sur",
    "proceso": "En Campo"
  },
  {
    "id": 2,
    "nombreProy": "Fam. Durán",
    "image": "duran",
    "lugar": "Quechua Panao",
    "proceso": "En Campo"
  },
  {
    "id": 3,
    "nombreProy": "Fam. Flores Diego",
    "image": "flores_diego",
    "lugar": "Amahuacas",
    "proceso": "En Campo"
  },
  {
    "id": 4,
    "nombreProy": "Fam. Garay Galvez",
    "image": "garay_galvez",
    "lugar": "Estados Unidos",
    "proceso": "En Campo"
   },
]

1 个答案:

答案 0 :(得分:0)

您可以解决dart核心框架代码。

  1. 您应该首先创建资产文件夹,即根文件夹。 (插入资产中的JSON文件)

  2. 打开pubspec.yaml文件并声明JSON文件。

    资产:  asset / sample.json

  3. 您可以使用此代码并访问JSON文件。

    字符串数据=等待rootBundle.loadString('assets / $ path.json')

  4. 现在您有了JSON文件作为字符串。

  5. 您可以将数据字符串转换为JSON格式。

    var jsonList = json.decode(data);

  6. 最后,您创建一个类JSON模型。 (您可以选择JSON到dart或JSON序列化库)

    for(jsonList中的可变项){       print(Sample.fromJson(item));     }

此解决方案将为您提供帮助。 如果需要完整的代码,请查看要点文件=> https://gist.github.com/VB10/34e97818f19f6bf0749fff8ffd1a5319

local json parser