1
の次の問題を解決しません: 私はExpansionTilesのリストを持っています。私が直面している唯一の問題は、ビューからスクロールされた拡張されたExpansionTileが、ビューにスクロールした後で、もはや展開されないことです。これにより、望ましくないユーザーエクスペリエンスや、一種の「不安定な」スクロールが発生します。ExpansionTileは状態
ドキュメントは、次のことを述べている:
ListViewコントロールなどのスクロールウィジェットで使用する場合、それは、ビューの中と外にスクロールされたときに、一意のキーはその拡張状態を保存し、復元するためにExpansionTileを可能にするために指定する必要があります。
これは機能しません。これまで私はこの仕事をする方法がないことを発見しました。ここ
は、これまでのコードです:
import 'package:flutter/material.dart';
void main() {
runApp(new MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'ExpansionTile Test',
home: new MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Widget> _getChildren() {
List<Widget> elements = [];
for (int i = 0; i < 20; i++) {
elements.add(new ListChild());
}
return elements;
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('ExpansionTile Test'),
),
body: new ListView(
children: _getChildren(),
),
);
}
}
class ListChild extends StatefulWidget {
@override
State createState() => new ListChildState();
}
class ListChildState extends State<ListChild> {
GlobalKey<ListChildState> _key = new GlobalKey();
@override
Widget build(BuildContext context) {
return new ExpansionTile(
key: _key,
title: const Text('Test Tile'),
children: <Widget>[
const Text('body'),
],
);
}
}
ありがとうございます、魅力のように動作します。しかし、これはどこかで文書化されていますか?私はこの種のキーへの参照を見つけることができませんでした。 –
ドキュメントを改善するためにhttps://github.com/flutter/flutter/pull/11034をオープンしました。 –