具有互动程序的ListView不在颤振模式下工作

具有互动程序的ListView不在颤振模式下工作,listview,flutter,widget,tile,stateless,Listview,Flutter,Widget,Tile,Stateless,为什么我的ListView没有显示预期的互动程序 class DepartureCell extends StatelessWidget { @override Widget build(BuildContext context) { return ListView.builder( itemCount: 20, itemBuilder: (BuildContext context, int index) { return ListTil

为什么我的ListView没有显示预期的互动程序

class DepartureCell extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: 20,
      itemBuilder: (BuildContext context, int index) {
        return ListTile(
          title: new Text("Test"),
          onTap: () {},
        );
      }
    );
  }
}
错误显示:

flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
flutter: The following assertion was thrown during performResize():
flutter: Vertical viewport was given unbounded height.
flutter: Viewports expand in the scrolling direction to fill their container.In this case, a vertical
flutter: viewport was given an unlimited amount of vertical space in which to expand. This situation
flutter: typically happens when a scrollable widget is nested inside another scrollable widget.
flutter: If this widget is always nested in a scrollable widget there is no need to use a viewport because
flutter: there will always be enough vertical space for the children. In this case, consider using a Column
flutter: instead. Otherwise, consider using the "shrinkWrap" property (or a ShrinkWrappingViewport) to size
flutter: the height of the viewport to the sum of the heights of its children.
由于
未绑定高度出现问题,我还尝试了以下方法:

代码也不起作用:

class DepartureCell extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: 20,
      itemBuilder: (BuildContext context, int index) {
        return SizedBox(
          width: double.infinity,
          height: 40.0,
          child: ListTile(
            title: Text("Test"),
            onTap: () {},
            trailing: Text("Test"),
          ),
        );
      }
    );
  }
}
class DepartureCell extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        ListView.builder(
          padding: EdgeInsets.all(0.0),
          itemCount: 10,
          itemBuilder: (BuildContext context, int position) {
            return SizedBox(
              width: double.infinity,
              height: 40.0,
              child:ListTile(
                title: Text("Test"),
                onTap: () {},
                trailing: Text("Test"),
              ),
            );
          }
        ),
      ]
    );
  }
}
我怎样才能让它在颤振中工作

我也尝试了
——但同样的事情……不起作用

这里是列代码,也就是不工作:

class DepartureCell extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemCount: 20,
      itemBuilder: (BuildContext context, int index) {
        return SizedBox(
          width: double.infinity,
          height: 40.0,
          child: ListTile(
            title: Text("Test"),
            onTap: () {},
            trailing: Text("Test"),
          ),
        );
      }
    );
  }
}
class DepartureCell extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Column(
      children: <Widget>[
        ListView.builder(
          padding: EdgeInsets.all(0.0),
          itemCount: 10,
          itemBuilder: (BuildContext context, int position) {
            return SizedBox(
              width: double.infinity,
              height: 40.0,
              child:ListTile(
                title: Text("Test"),
                onTap: () {},
                trailing: Text("Test"),
              ),
            );
          }
        ),
      ]
    );
  }
}
class DepartureCell扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回列(
儿童:[
ListView.builder(
填充:所有边缘设置(0.0),
物品计数:10,
itemBuilder:(构建上下文,int位置){
返回大小框(
宽度:double.infinity,
身高:40.0,
孩子:ListTile(
标题:文本(“测试”),
onTap:(){},
尾随:文本(“测试”),
),
);
}
),
]
);
}
}

这是我找到的一个工作代码(见下文)

不过,我相信这是可以简化的。但是怎么做??有什么建议吗

以下是整个工作代码:

首先,我在main.dart中调用DepartueCell()

import 'package:flutter/material.dart';
import './departures/cells/departure_cell.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: Text("CH Station Demo"),
        ),
        body: DepartureCell()
      ),
    );
  }
}
然后我做剩下的

import 'package:flutter/material.dart';
import './../../models/ch_departure.dart';

class DepartureCell extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: ListView.builder(
          padding: EdgeInsets.all(8.0),
          itemCount: 10,
          itemBuilder: (context, index) {
            return Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                SizedBox(
                  width: double.infinity,
                  height: 50.0,
                  child: ListTile(
                    title: Text("Test"),
                    onTap: () {},
                    trailing: Text("Test2"),
                  ),
                )
              ],
            );
          }
        ),
    );
  }
}
导入“包装:颤振/材料.省道”;
导入“../../../models/ch_deposition.dart”;
类DepartureCell扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回中心(
子项:ListView.builder(
填充:边缘设置。全部(8.0),
物品计数:10,
itemBuilder:(上下文,索引){
返回列(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
大小盒子(
宽度:double.infinity,
身高:50.0,
孩子:ListTile(
标题:文本(“测试”),
onTap:(){},
尾随:文本(“Test2”),
),
)
],
);
}
),
);
}
}
有人能解释一下,当我把所有东西都放在中间并将列放在ListView.builder中时,为什么它突然工作了


有没有更简单的解决方法???

我不知道您以前的代码是什么。如果你能发布比我更早的代码,我可以向你解释例外情况

下面是代码的简化版本

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
          appBar: AppBar(
            title: Text("CH Station Demo"),
          ),
          body: DepartureCell()),
      //home: TrackerApp(),
    );
  }
}

class DepartureCell extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return ListView.builder(
        padding: EdgeInsets.all(8.0),
        itemCount: 10,
        itemBuilder: (context, index) {
          return ListTile(
            title: Text("Test"),
            onTap: () {},
            trailing: Text("Test2"),
          );
        });
  }
}

我也有同样的问题。。。。在做了一些尝试后,我发现当设备屏幕被锁定或关闭时会产生问题


解锁屏幕并从编辑器重新加载/重新运行应用程序可能会像解决我的问题一样解决此问题。

您在哪里使用的是DepartureCell()?请输入密码。谢谢你,杜玛!这有帮助。我以前的代码是相同的(即,
在MyApp小部件的主体内调用DepartureCell
,但是,它被包装在Expanded和Column中。我发现这是一个错误!)。。。