Flutter - アイテムを選択した後にExpansionTileが折りたたまれる 質問する

Flutter - アイテムを選択した後にExpansionTileが折りたたまれる 質問する

項目を選択した後に折りたたもうとしていますExpansionTileが、開いたリストが閉じません。

物件を利用しようとしたonExpansionChangedが、利用できなかった

この問題をどのように解決しますか?

アイテムを選択した後に折りたたまれないことを示す GIF を挿入しますExpansionTile。また、使用されるコードも以下に記載します。

ここに画像の説明を入力してください

import 'package:flutter/material.dart';

void main() {
  runApp(new ExpansionTileSample());
}

class ExpansionTileSample extends StatefulWidget {
  @override
  ExpansionTileSampleState createState() => new ExpansionTileSampleState();
}

class ExpansionTileSampleState extends State<ExpansionTileSample> {
  String foos = 'One';

  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text('ExpansionTile'),
        ),
        body: new ExpansionTile(
          title: new Text(this.foos),
          backgroundColor: Theme.of(context).accentColor.withOpacity(0.025),
          children: <Widget>[
            new ListTile(
              title: const Text('One'),
              onTap: () {
                setState(() {
                  this.foos = 'One';
                });
              },              
            ),
            new ListTile(
              title: const Text('Two'),
              onTap: () {
                setState(() {
                  this.foos = 'Two';
                });
              },              
            ),
            new ListTile(
              title: const Text('Three'),
              onTap: () {
                setState(() {
                  this.foos = 'Three';
                });
              },              
            ),
          ]
        ),
      ),
    );
  }
}

ベストアンサー1

回避策は次のとおりです。グローバル キー (またはアイテムを選択した後に変化する値キー) を追加するだけで、ExpansionTile が強制的に再構築されます。欠点は、折りたたむときのアニメーションが失われることです。

ExpansionTile(
  key: GlobalKey(),
  title: Text(title),
  children: listTiles,
  ...
)

おすすめ記事