onurk
ExpansionTile’da açık kapalı durumunu sadece ilk açılış için verebiliyoruz(initiallyExpanded).
Bunu aşmak için ListView her açılıp kapanmada yeni bir key alarak state’i yenileniyoruz ve initialExpanded’ın yeniden dikkate alınması sağlanmış oluyor. onExpandedChance tetiklendiğinde selected değerini değiştirerek sadece seçtiğimiz tile için initialExpanded true olmuş oluyor.
import 'package:flutter/material.dart';
class ListTileDeneme extends StatefulWidget {
@override
_ListTileDenemeState createState() => _ListTileDenemeState();
}
class _ListTileDenemeState extends State<ListTileDeneme> {
int selected = -1;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: SingleChildScrollView(
child: ListView.builder(
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
key: Key('builder ${selected.toString()}'),
itemBuilder: (BuildContext context, int index) {
return ExpansionTile(
key: Key(index.toString()),
initiallyExpanded: index == selected,
title: Text(
'Tile $index',
),
subtitle: Text(
'Flutter Forum',
),
children: <Widget>[
Padding(
padding: EdgeInsets.all(25.0),
child: Text('DETAİL $index \n Test '))
],
onExpansionChanged: ((newState) {
selected = newState ? index : -1;
setState(() {});
}),
);
},
itemCount: 10,
),
),
);
}
}