Dart 在新列上显示列表的每个元素

Dart 在新列上显示列表的每个元素,dart,flutter,Dart,Flutter,我有一个本地json文件,可以检索到我需要的所有信息。然而,我似乎不能像我喜欢的那样展示它。我有一个名为list的列表,希望将每个元素(每个字母)显示为一列,这样我就可以使用填充来显示它并更改字体。我正在尝试创建一个类似于word connect的游戏 import 'dart:convert'; import 'package:flutter/material.dart'; void main() { runApp(new MaterialApp( home: new MyA

我有一个本地json文件,可以检索到我需要的所有信息。然而,我似乎不能像我喜欢的那样展示它。我有一个名为list的列表,希望将每个元素(每个字母)显示为一列,这样我就可以使用填充来显示它并更改字体。我正在尝试创建一个类似于word connect的游戏

import 'dart:convert';

import 'package:flutter/material.dart';


void main() {
  runApp(new MaterialApp(
    home: new MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  @override
  MyAppState createState() => new MyAppState();
}

class MyAppState extends State<MyApp> {
  List data;

  @override
  Widget build(BuildContext context) {
    final title = 'Basic List';
    return new MaterialApp(
      title: title,
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text("Load local JSON file"),
        ),
        body: new Container(
          child: new Center(
            // Use future builder and DefaultAssetBundle to load the local JSON file
            child: new FutureBuilder(
                future: DefaultAssetBundle
                    .of(context)
                    .loadString('data_repo/starwars_data.json'),
                builder: (context, snapshot) {

                  var newData = JSON.decode(snapshot.data.toString());

                 List<Widget> listMyWidgets(){
                    List<Widget> list = new List();
                    for( var i = 0; i < newData.length; i++){
                    var word = newData[i]['word']["letters"];
                    for( var n = 0; n < word.length; n++){
                      list.add(new Text(word[n]['letter']));
                    }

                    }
                      return list;        
                    }

                  return new ListView.builder(
                    itemBuilder: (BuildContext context, int index) { 

                      return new Card(
                        child: new Column(
                          crossAxisAlignment: CrossAxisAlignment.stretch,
                          children:[
                            new Column(
                              children:[
                                new Image.asset( newData[index]['image'])
                              ]
                            ),
                              new Row(
                              children:listMyWidgets()
                            )
                          ],
                        ),
                      );
                    },
                    itemCount: newData == null ? 0 : newData.length,
                  );
                }),
          ),
        )


        ));
  }
}
导入'dart:convert';
进口“包装:颤振/材料.省道”;
void main(){
runApp(新材料)PP(
主页:新建MyApp(),
));
}
类MyApp扩展了StatefulWidget{
@凌驾
MyAppState createState()=>新建MyAppState();
}
类MyAppState扩展了状态{
列出数据;
@凌驾
小部件构建(构建上下文){
最终标题=‘基本列表’;
返回新材料PP(
标题:标题,,
家:新脚手架(
appBar:新的appBar(
标题:新文本(“加载本地JSON文件”),
),
主体:新容器(
孩子:新中心(
//使用future builder和DefaultAssetBundle加载本地JSON文件
孩子:新未来建设者(
未来:DefaultAssetBundle
.of(上下文)
.loadString('data\u repo/starwars\u data.json'),
生成器:(上下文,快照){
var newData=JSON.decode(snapshot.data.toString());
列表listMyWidgets(){
列表=新列表();
对于(var i=0;i
类似于此:


啊,我想你问的是


我不能完全理解你想要的布局,你能不能有一个类似于上图的错误?为了实现类似的效果,你可以简单地使用带有两个扩展子项的列和flex属性。我不太理解这个问题。这就是你想要的吗?非常感谢!这太棒了!
class GridViewWords extends StatelessWidget {
  List letters = [
    "a",
    "b",
    "c",
    "d",
    "e",
    "f",
    "g",
    "h",
    "i",
    "j",
    "k"
  ];
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: new GridView.count(
        shrinkWrap: true,
        crossAxisCount: 3,
        children: new List.generate(letters.length, (i)=>
        new Card(
          elevation: 5.0,
          color: Colors.brown[500],
          child: new Padding(
            padding: const EdgeInsets.all(8.0),
            child: new Center(child: new Text(letters[i])),
          ),
        )),

      ),

    );
  }
}