Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 单独小部件中的Listbuilder不工作_Flutter_Flutter Layout - Fatal编程技术网

Flutter 单独小部件中的Listbuilder不工作

Flutter 单独小部件中的Listbuilder不工作,flutter,flutter-layout,Flutter,Flutter Layout,我尝试了Flutter.io中的listbuilder演示。这很好,但是我想将页面添加到textview中,因此我将listbuilder移动到一个单独的小部件中,这会引发以下错误: 发生异常。 错误(无法命中测试从未放置过的渲染框。命中测试()方法在此RenderBox上被调用:RenderStack#894cd NEEDS-LAYOUT NEEDS-PAINT不幸的是,此对象的几何体此时未知,可能是因为它从未被布局过。这意味着无法对其进行精确的命中测试。如果您试图在布局阶段本身执行命中测试,

我尝试了Flutter.io中的listbuilder演示。这很好,但是我想将页面添加到textview中,因此我将listbuilder移动到一个单独的小部件中,这会引发以下错误:

发生异常。 错误(无法命中测试从未放置过的渲染框。命中测试()方法在此RenderBox上被调用:RenderStack#894cd NEEDS-LAYOUT NEEDS-PAINT不幸的是,此对象的几何体此时未知,可能是因为它从未被布局过。这意味着无法对其进行精确的命中测试。如果您试图在布局阶段本身执行命中测试,请确保只命中已完成布局(例如,在调用节点的layout()方法后,节点的子节点已完成布局。)

完整代码:

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)上方放置一个下拉按钮,以选择要列出项目的数据库表。这就是我在哥伦布思考的原因。我可以用什么来代替?