flutter - 如何在 Flutter 中为 ExpansionPanel 添加背景颜色

标签 flutter expansion flutter-layout

我正在尝试在 Flutter 中设置 ExpansionPanel 的样式,但颜色并未应用于整个面板。我已经尝试了 Container 和 Card 小部件,颜色没有更新。有任何想法吗?我想添加背景颜色以覆盖整个 ExpansionPanel。有没有办法将父主题添加到 ExpansionPanel。

卡片

Card(
  elevation: 2.0,
  color: Theme.of(context).primaryColor,
  margin: EdgeInsets.only(left: 10.0,right: 10.0,top: 10.0),
  child: ExpansionPanelList(
    expansionCallback: (int index, bool isExpanded) {
      setState(() {
        _items[index].isExpanded = !_items[index].isExpanded;
        Timer(Duration(milliseconds: 200), () {
          setState(() {
            _reconfigureFAB();
          });
        });
      });
    },
    children: _items.map((IncludedItem item) {
      return ExpansionPanel(
        headerBuilder: (BuildContext context, bool isExpanded) {
          return Container(
            padding: EdgeInsets.only(left: 18.0),
            child: Row(children: [
              Text(
                "What's included",
                textAlign: TextAlign.start,
                style: TextStyle(
                    fontFamily: 'Bold',
                    fontSize: 33.0,
                    color: Theme.of(context).backgroundColor),
              ),
            ]),
          );
          ;
        },
        isExpanded: item.isExpanded,
        body: Container(
          child: Text("body"),
        ),
      );
    }).toList(),
  ),
);

容器

Container(
  color: Theme.of(context).primaryColor,
  margin: EdgeInsets.only(left: 10.0,right: 10.0,top: 10.0),
  child: ExpansionPanelList(
    expansionCallback: (int index, bool isExpanded) {
      setState(() {
        _items[index].isExpanded = !_items[index].isExpanded;
        Timer(Duration(milliseconds: 200), () {
          setState(() {
            _reconfigureFAB();
          });
        });
      });
    },
    children: _items.map((IncludedItem item) {
      return ExpansionPanel(
        headerBuilder: (BuildContext context, bool isExpanded) {
          return Container(
            padding: EdgeInsets.only(left: 18.0),
            child: Row(children: [
              Text(
                "What's included",
                textAlign: TextAlign.start,
                style: TextStyle(
                    fontFamily: 'Bold',
                    fontSize: 33.0,
                    color: Theme.of(context).backgroundColor),
              ),
            ]),
          );
          ;
        },
        isExpanded: item.isExpanded,
        body: Container(
          child: Text("body"),
        ),
      );
    }).toList(),
  ),
);

最佳答案

ExpansionPanelList 使用主题中的 cardColor 颜色。 您可以在 MaterialApp(theme 属性)中指定它或在您的小部件中覆盖它:

Container(
          color: Theme.of(context).primaryColor,
          margin: EdgeInsets.only(left: 10.0, right: 10.0, top: 10.0),
          child: Theme(
            data: Theme.of(context).copyWith(cardColor: Colors.red),
            child: ExpansionPanelList(
                ...

expansionpanel

关于flutter - 如何在 Flutter 中为 ExpansionPanel 添加背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51323981/

相关文章:

flutter - 如何避免每次导航到页面时都重新加载数据

flutter - 无法更改下拉按钮值 Flutter

dart - 如何创建具有圆角和渐变背景的按钮?

flutter - GridLayout 项目溢出 flutter

dart - 相对于居中的小部件定位小部件

google-maps - 如何使用 Flutter/Dart 在 map 上添加标记点击/单击?

flutter - Flutter:值是空的

c - 使用 ## 运算符扩展宏

android - 扩展文件是否将所有文件存储到手机的 res/drawable 文件夹中?

emacs - 如何控制 Emacs 缩写扩展中的光标位置?