2017-08-08 81 views
0

我是新來的顫抖,我陷入了一個問題。我正在嘗試製作擴展小組列表。我能夠製作列表,但無法使擴展面板展開或摺疊。我附上代碼。請看看它,讓我知道這個問題。顫動中的擴展面板列表

ExpansionPanelList criteria; 
criteria = new ExpansionPanelList(
    children: <ExpansionPanel>[ 
    new ExpansionPanel(
     headerBuilder: schoolheaderBuilder, 
     body: new Text("school"), 
     isExpanded: false, 
    ), 
    new ExpansionPanel(
     headerBuilder: hospitalheaderBuilder, 
     body: new Text("hospital"), 
    ), 
    new ExpansionPanel(
     headerBuilder: vaheaderBuilder, 
     body: new Text("va facility"), 
     isExpanded: false), 
    new ExpansionPanel(
     headerBuilder: restheaderBuilder, 
     body: new Text("Restaurants"), 
     isExpanded: false), 
    new ExpansionPanel(
     headerBuilder: crimeheaderBuilder, 
     body: new Text("Crime"), 
     isExpanded: false), 
    new ExpansionPanel(
     headerBuilder: commuteheaderBuilder, 
     body: new Text("Commute"), 
     isExpanded: false), 
    new ExpansionPanel(
     headerBuilder: incomeBuilder, 
     body: new Text("Household Income"), 
     isExpanded: false), 
    new ExpansionPanel(
     headerBuilder: househeaderBuilder, 
     body: new Text("House Value"), 
     isExpanded: false) 
    ], 
    expansionCallback: (int index, bool isExpanded) 
    { 
    isExpanded = !criteria.children[index].isExpanded; 
    }, 
); 
+0

你可以嘗試切換isExpanded與criteria.children ...?像這樣: criteria.children [index] .isExpanded =!isExpanded; –

+0

有人給我說:https://stackoverflow.com/questions/45104182/cant-creat-expansionpanellist-with-items-in-flutter/45104992#45104992 –

+0

檢查[這個例子](https://github.com/ flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart)來自flutter gallery – Himanshu

回答

1
This is the code I used 

    class Criterias extends StatefulWidget { 
    CriteriaState createState() => new CriteriaState(); 
} 

class NewItem { 
    bool isExpanded; 
    final String header; 
    final Widget body; 
    final Icon iconpic; 
    NewItem(this.isExpanded, this.header, this.body, this.iconpic); 
} 

double discretevalue = 2.0; 
double hospitaldiscretevalue = 25.0; 

class CriteriaState extends State<Criterias> { 
    List<NewItem> items = <NewItem>[ 
    new NewItem(
     false, 
     'Schools', 
     new Padding(
      padding: new EdgeInsets.all(20.0), 
      child: new Column(children: <Widget>[//put the children here]) 
      ),new Icon()`enter code here`), 
//give all your items here 
    ]; 

    ListView List_Criteria; 
    Widget build(BuildContext context) { 
    List_Criteria = new 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.iconpic, 
         title: new Text(
         item.header, 
         textAlign: TextAlign.left, 
         style: new TextStyle(
          fontSize: 20.0, 
          fontWeight: FontWeight.w400, 
         ), 
        )); 
       }, 
       isExpanded: item.isExpanded, 
       body: item.body, 
      ); 
      }).toList(), 
     ), 
     ) 
     ], 
    ); 

    Scaffold scaffold = new Scaffold(
     appBar: new AppBar(
     title: new Text("Criteria Selection"), 
    ), 
     body: List_Criteria, 
     persistentFooterButtons: <Widget>[ 
     new ButtonBar(children: <Widget>[ 
      new FlatButton(
      color: Colors.blue, 
      onPressed: null, 
      child: new Text(
       'Apply', 
       textAlign: TextAlign.left, 
       style: new TextStyle(fontWeight: FontWeight.bold), 
      ), 
     ) 
     ]) 
     ], 
    ); 
    return scaffold; 
    } 
}