Flutter 单独小部件中的Listbuilder不工作
我尝试了Flutter.io中的listbuilder演示。这很好,但是我想将页面添加到textview中,因此我将listbuilder移动到一个单独的小部件中,这会引发以下错误: 发生异常。 错误(无法命中测试从未放置过的渲染框。命中测试()方法在此RenderBox上被调用:RenderStack#894cd NEEDS-LAYOUT NEEDS-PAINT不幸的是,此对象的几何体此时未知,可能是因为它从未被布局过。这意味着无法对其进行精确的命中测试。如果您试图在布局阶段本身执行命中测试,请确保只命中已完成布局(例如,在调用节点的layout()方法后,节点的子节点已完成布局。) 完整代码:Flutter 单独小部件中的Listbuilder不工作,flutter,flutter-layout,Flutter,Flutter Layout,我尝试了Flutter.io中的listbuilder演示。这很好,但是我想将页面添加到textview中,因此我将listbuilder移动到一个单独的小部件中,这会引发以下错误: 发生异常。 错误(无法命中测试从未放置过的渲染框。命中测试()方法在此RenderBox上被调用:RenderStack#894cd NEEDS-LAYOUT NEEDS-PAINT不幸的是,此对象的几何体此时未知,可能是因为它从未被布局过。这意味着无法对其进行精确的命中测试。如果您试图在布局阶段本身执行命中测试,
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
void main() {
runApp(MyApp(
items: List<String>.generate(10, (i) => "Item $i"),
));
}
class MyApp extends StatelessWidget {
final List<String> items;
MyApp({Key key, @required this.items}) : super(key: key);
@override
Widget build(BuildContext context) {
final title = 'Long List';
return MaterialApp(
title: title,
home: Scaffold(
appBar: AppBar(
title: Text(title),
),
body: body(),
),
);
}
Widget body() {
return Container(
child: Column(children: <Widget>[
ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return ListTile(
title: Text('${items[index]}'),
);
},
)
]));
}
}
导入“包:flift/foundation.dart”;
进口“包装:颤振/材料.省道”;
void main(){
runApp(MyApp(
项目:列表。生成(10,(i)=>“项目$i”),
));
}
类MyApp扩展了无状态小部件{
最后清单项目;
MyApp({Key-Key,@required this.items}):超级(Key:Key);
@凌驾
小部件构建(构建上下文){
最终标题='长列表';
返回材料PP(
标题:标题,,
家:脚手架(
appBar:appBar(
标题:文本(标题),
),
body:body(),
),
);
}
小部件主体(){
返回容器(
子项:列(子项:[
ListView.builder(
itemCount:items.length,
itemBuilder:(上下文,索引){
返回列表块(
标题:文本(“${items[index]}”),
);
},
)
]));
}
}
尝试删除正文()中的列:
Widget body(){
返回容器(
子项:/*列(子项:[*/
ListView.builder(
itemCount:items.length,
itemBuilder:(上下文,索引){
返回列表块(
标题:文本(“${items[index]}”),
);
},
)
/* ]) */);
}
这是因为列
似乎没有特定的大小来呈现子窗口小部件。
更多信息:
2019.02.18更新:
要为列表添加同级,可以尝试使用扩展的包装它,然后添加同级
Widget body(){
返回容器(
子项:列(子项:[
文本(“下拉按钮”),
扩大(
子项:ListView.builder(
itemCount:items.length,
itemBuilder:(上下文,索引){
返回列表块(
标题:文本(“${items[index]}”),
);
},
),
),
])
),
}
谢谢!这是可行的,但我想在列表(listbuilder)上方放置一个下拉按钮,以选择要列出项目的数据库表。这就是我在哥伦布思考的原因。我可以用什么来代替?