颤振| ExpansionTile属性“children”在扩展时抛出了Bottous Overflowed问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了颤振| ExpansionTile属性“children”在扩展时抛出了Bottous Overflowed问题相关的知识,希望对你有一定的参考价值。

我正在建立一个从Firestore中取出的物品清单,包裹在ExpansionTile内的ListView.builder()中。正确获取数据。没问题。我可以看到这些项目的清单。

问题是关于瓷砖扩展我需要显示一些ListTile。但在扩张时,它给我扔了一个Bottom Overflowed by X pixels

要解决这个问题,我尝试将其包装在ListView中,但它会抛出异常 -

引发了另一个异常:NoSuchMethodError:方法'<='在null上调用。

没运气。

我正在编写这样的代码 -

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:flutter/material.dart';

class NewExpansionPanel extends StatefulWidget {
  @override
  _NewExpansionPanelState createState() => _NewExpansionPanelState();
}

class _NewExpansionPanelState extends State<NewExpansionPanel> {
  Widget getListOfTexts(){
    return ListView(
      children: <Text>[
        Text('one'),
        Text('two'),
        Text('three'),
      ],
    );
  }

  @override
  Widget build(BuildContext context) {
    return StreamBuilder(
      stream: Firestore.instance.collection(*someCollection*).snapshots(),
      builder: (context, snapshot) {
        if(!snapshot.hasData) return const Text("Loading.....");

        return ListView.builder(
          itemExtent: 80.0,
          itemCount: snapshot.data.documents.length,
          itemBuilder: (context, index) {
            final DocumentSnapshot document = snapshot.data.documents[index];
            return new ExpansionTile(
              children: [
                getListOfTexts()
              ],
              title: Column(
                crossAxisAlignment: CrossAxisAlignment.start,
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text(
                    document['something'] ?? ' ',
                  ),
                  Text(document['title'] ?? '<No title retrieved>'),
                ],
              ), 
              onExpansionChanged: (bool isExpanded) {
                // put some code here in future
              },
            );
          }
        );
      }
    );
  }
}
答案

您是否尝试在没有ListView的情况下直接使用ExpansionTile子文本?就像这样...

       ...//      
    return new ExpansionTile(
          children: [
            Text('one'),
            Text('two'),
            Text('three'),
          ],
        ...

或使用ListTile的文本..

return new ExpansionTile(
                children: [
                  ListTile(title: Text('one'),),
                  ListTile(title: Text('Two'),),
                  ListTile(title: Text('Three'),),           
                 ],
另一答案

这很尴尬。我只需要删除itemExtent: 80.0上的ListView.builder属性。这导致了Bottom Overflowed问题。

以上是关于颤振| ExpansionTile属性“children”在扩展时抛出了Bottous Overflowed问题的主要内容,如果未能解决你的问题,请参考以下文章

expansiontile 打开关闭楼层

修改默认的 ExpansionTile 子项垂直填充 Flutter

来自 json 的 Flutter ExpansionTile

如何在 Flutter 中折叠其他 ExpansionTile 元素

更改颤振抽屉背景颜色

我想要第一个 ExpansionTile 的项目默认是打开的。我想当我单击另一个项目时,当前项目将关闭。我该怎么做?