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