@@ -30,9 +30,23 @@ class PacketDetailPage extends StatefulWidget {
3030
3131enum _SortBy { time, coinsLeast, coinsMost }
3232
33+ extension _LoopExt on _SortBy {
34+ _SortBy loopNext () => this == _SortBy .values.last ? _SortBy .values.first : _SortBy .values[index + 1 ];
35+
36+ String loopNextTip (BuildContext context) => loopNext ().tip (context);
37+
38+ String tip (BuildContext context) => switch (this ) {
39+ _SortBy .time => context.t.packetDetailPage.sort.sortByTime,
40+ _SortBy .coinsLeast => context.t.packetDetailPage.sort.sortByLeastCoins,
41+ _SortBy .coinsMost => context.t.packetDetailPage.sort.sortByMostCoins,
42+ };
43+ }
44+
3345class _PacketDetailPageState extends State <PacketDetailPage > {
3446 _SortBy _sortByCoins = _SortBy .time;
3547
48+ String _nextSortTip = '' ;
49+
3650 Widget _buildInfoRow (BuildContext context, List <PacketDetailModel > data) {
3751 final tr = context.t.packetDetailPage;
3852 final secondaryColor = Theme .of (context).colorScheme.secondary;
@@ -126,6 +140,12 @@ class _PacketDetailPageState extends State<PacketDetailPage> {
126140 );
127141 }
128142
143+ @override
144+ void didChangeDependencies () {
145+ super .didChangeDependencies ();
146+ _nextSortTip = _sortByCoins.loopNextTip (context);
147+ }
148+
129149 @override
130150 Widget build (BuildContext context) {
131151 return MultiBlocProvider (
@@ -154,12 +174,12 @@ class _PacketDetailPageState extends State<PacketDetailPage> {
154174 actions: [
155175 IconButton (
156176 icon: const Icon (Icons .sort_outlined),
177+ tooltip: _nextSortTip,
157178 onPressed: state is PacketDetailSuccess
158- ? () => setState (
159- () => _sortByCoins == _SortBy .values.last
160- ? _sortByCoins = _SortBy .values.first
161- : _sortByCoins = _SortBy .values[_sortByCoins.index + 1 ],
162- )
179+ ? () => setState (() {
180+ _sortByCoins = _sortByCoins.loopNext ();
181+ _nextSortTip = _sortByCoins.loopNextTip (context);
182+ })
163183 : null ,
164184 ),
165185 ],
0 commit comments