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

问题描述 投票:0回答:1
 body: Container(color: Colors.white,
          child: SingleChildScrollView(
              child : Column( 
                children : [
                  Padding(padding: EdgeInsets.only(left : 23.0, top: 23.0, right: 23.0, bottom: 5.0), 
                              child : Text("Title", style: MyTextStyles.textNormal,)),

                  ListView.builder(
                      padding: EdgeInsets.only(left: 13.0, right: 13.0, bottom: 25.0),
                      shrinkWrap: true,
                      physics: NeverScrollableScrollPhysics(),
                      itemCount: PersonModel.icData.length,
                      itemBuilder: (context, index) {
                        PersonModel _model = PersonModel.icData[index];
                        return Column(
                          children: <Widget>[
                            Divider(
                              height: 17.0,
                              color: MyColors.white,
                            ), 
                                  ExpansionTile(
                                        key:  PageStorageKey<String>(index.toString()),
                                        initiallyExpanded: false,
                                        leading: 
                                        new ClipOval(
                                                child: SvgPicture.asset(
                                                    _model.picture,
                                                    height: 57.0,
                                                    width: 57.0,
                                                ),
                                            ),

                                        title: Text(_model.title,style: TextStyle(color: Color(0xFF09216B), fontFamily: 'ProximaNova-Bold')), 
                                        subtitle: Text(_model.subtitle, style: TextStyle(color: Colors.black, fontSize: 13.0,),),
                                        children: <Widget>[                                       
                                          Padding(padding: EdgeInsets.only(left: 20.0, top: 15.0), 
                                                      child : Text(_model.title + ' ' +_model.detail,)
                                                      ) 
                                        ],
                                        onExpansionChanged: ((newState){
                                             print(' is now : ' + newState.toString());
                                        })
                                      ),

                              ]
                              //trailing: 
                            );
                      },
                        )
                ]
                    ),
          )           
        ),

example

我尝试在Flutter中使用ExpansionTile创建人员列表。人员列表具有属性和详细信息。我想首先打开ExpansionTile的项目默认值。我想当我单击另一个项目时,当前项目将被关闭。因此,只有一件将始终打开。我该怎么做?谢谢。

flutter dart flutter-layout flutter-animation expansion
1个回答
0
投票

您可以使用initiallyExpanded = false,代替initiallyExpanded = index == 0。这样,您将检查项目的索引,如果索引为0,则将首先对其进行扩展。

© www.soinside.com 2019 - 2024. All rights reserved.