Flutter ExpansionPanel 不会在 ListView 上展开

标签 flutter flutter-layout flutter-listview

在这个简单的代码中,我试图在ListView中添加ExpansionPanelList,实现后,ExpansionPanel在点击后不会展开展开或折叠

import 'package:flutter/material.dart';

void main()=>runApp(MaterialApp(home: App()));

class App extends StatefulWidget {
  @override
  State<StatefulWidget> createState()=>_App();
}

class _App extends State<App> {
  List<NewItem> items = [];
  @override
  Widget build(BuildContext context) {

    items=[];

    List.generate(5, (int index) {
      items.add(NewItem(
        false,
        'aaaaa',
        Container(child:Text('1')),
        Container(child:Text('2')),
      ));
    });

    return Scaffold(body: ListView(
      children: [
        new Padding(
          padding: new EdgeInsets.all(10.0),
          child: new ExpansionPanelList(
            expansionCallback: (int index, bool isExpanded) {
              setState(() {
                items[index].isExpanded = !items[index].isExpanded;
              });
            },
            children: items.map((NewItem item) {
              return new ExpansionPanel(
                headerBuilder: (BuildContext context, bool isExpanded) {
                  return new ListTile(
                      leading: item.image,
                      title: new Text(
                        item.header,
                        textAlign: TextAlign.right,
                        style: new TextStyle(
                          fontSize: 20.0,
                          fontWeight: FontWeight.w400,
                        ),
                      ));
                },
                isExpanded: item.isExpanded,
                body: item.body,
              );
            }).toList(),
          ),
        )
      ],
    ),);
  }
}

class NewItem {
  bool isExpanded;
  final String header;
  final Widget body;
  final Widget image;

  NewItem(this.isExpanded, this.header, this.body, this.image);
}

最佳答案

问题已解决

  @override
  void initState() {
    super.initState();
    List.generate(5, (int index) {
      items.add(NewItem(
        false,
        'aaaaa',
        Container(child:Text('1')),
        Container(child:Text('2')),
      ));
    });
  }

关于Flutter ExpansionPanel 不会在 ListView 上展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57407808/

相关文章:

flutter - 如何检测ListView项目是否在屏幕外添加?

flutter - 在 Flutter 中点击另一个项目 ListView 后如何取消选择已经选择的项目?

dart - 如何在 Flutter 中使一些文本可点击(响应点击)?

dart - 如何检测 Flutter App 代码中的热重载?

android - 无法选择 Flutter Dropdownbutton 的项目

flutter - iOS 上的向后滑动手势被 WillPopScope 覆盖

android-studio - flutter 应用栏中不需要的操作按钮

dart - 在 SnackBarAction onPressed 上 flutter 小吃吧

Flutter 容器布局行为

flutter - Flutter:将列表另存为收藏