android - 无法使用 Flutter 中的项目创建 ExpansionPanelList

标签 android panel flutter

我是 Flutter 的新手,所以我正在努力学习。但我一直在创建一个带有 ExpansionPanel 的 ExpansionPanelList。就像标题所说的那样,所有这些都是在谷歌的 Flutter 中创建的。

到目前为止我的代码:

import 'package:flutter/material.dart';


class ShoppingBasket extends StatefulWidget {
  @override
  ShoppingBasketState createState() => new ShoppingBasketState();
}

class ShoppingBasketState extends State<ShoppingBasket> {

  @override
  Widget build(BuildContext context) {
    return new ExpansionPanelList(
      children: <ExpansionPanel>[
        new ExpansionPanel(
          headerBuilder: _headerBuilder,
          body: new Container(
            child: new Text("body"),
          ),
        )
      ],
    );
  }


  Widget _headerBuilder(BuildContext context, bool isExpanded) {
    return new Text("headerBuilder");
  }
}

但是当我打开应用程序时,调试器说:

Another exception was thrown: 'package:flutter/src/rendering/box.dart': Failed assertion: line 1430 pos 12: 'hasSize': is not true.

最佳答案

听起来您需要将 ExpansionPanelList 放入 ListViewColumn 或其他一些不会强制它的容器中特定尺寸。

下面是扩展面板的使用示例。

screenshot

import 'package:flutter/material.dart';

class ShoppingBasket extends StatefulWidget {
  @override
  ShoppingBasketState createState() => new ShoppingBasketState();
}

class MyItem {
  MyItem({ this.isExpanded: false, this.header, this.body });

  bool isExpanded;
  final String header;
  final String body;
}

class ShoppingBasketState extends State<ShoppingBasket> {
  List<MyItem> _items = <MyItem>[
    new MyItem(header: 'header', body: 'body')
  ];

  @override
  Widget build(BuildContext context) {
    return new ListView(
      children: [
        new ExpansionPanelList(
          expansionCallback: (int index, bool isExpanded) {
            setState(() {
              _items[index].isExpanded = !_items[index].isExpanded;
            });
          },
          children: _items.map((MyItem item) {
            return new ExpansionPanel(
              headerBuilder: (BuildContext context, bool isExpanded) {
                return new Text(item.header);
              },
              isExpanded: item.isExpanded,
              body: new Container(
                child: new Text("body"),
              ),
            );
          }).toList(),
        ),
      ],
    );
  }
}

void main() {
  runApp(new MaterialApp(
    home: new Scaffold(
      appBar: new AppBar(
        title: new Text('ExpansionPanel Example'),
      ),
      body: new ShoppingBasket(),
    ),
  ));
}

Flutter Gallery 有更详细的 expansion panels example .

关于android - 无法使用 Flutter 中的项目创建 ExpansionPanelList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45104182/

相关文章:

java - OrderList 内的 Primefaces 面板

linux - flutter: Gradle build daemon 意外消失(它可能已经被杀死或者可能已经崩溃)

flutter - 使用按钮和滚动将小部件添加到GridView时出现问题

c# - 面板图形故障

java - 在 Canvas 中绘制可绘制不起作用

android - 如何删除 ScrollView 中的单个 View

java - 我的拖放功能在 Android Studio 中不起作用

c# - 添加鼠标点击事件到面板

flutter - 删除卡之间的空间

android - 未找到 react-native-fs 路径?