fix the UI issue with address book (#1803)
Serhii committed
Nov 14, 2024 at 03:20 UTC
cf7f019a925bec52086a63f6785e4c4dfa329298
2 files changed
+17
-9
lib/src/screens/contact/contact_list_page.dart
+13
-6
@@ -1,4 +1,5 @@
1
import 'package:cake_wallet/core/auth_service.dart';
2
+import 'package:cake_wallet/entities/contact.dart';
3
import 'package:cake_wallet/entities/contact_base.dart';
4
import 'package:cake_wallet/entities/contact_record.dart';
5
import 'package:cake_wallet/entities/wallet_list_order_types.dart';
@@ -11,14 +12,12 @@ import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
12
import 'package:cake_wallet/src/widgets/standard_list.dart';
13
import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
14
import 'package:cake_wallet/themes/extensions/exchange_page_theme.dart';
14
-import 'package:cake_wallet/themes/extensions/filter_theme.dart';
15
import 'package:cake_wallet/utils/show_bar.dart';
16
import 'package:cake_wallet/utils/show_pop_up.dart';
17
import 'package:cake_wallet/view_model/contact_list/contact_list_view_model.dart';
18
import 'package:flutter/cupertino.dart';
19
import 'package:flutter/material.dart';
20
import 'package:flutter/services.dart';
21
-import 'package:flutter/widgets.dart';
21
import 'package:flutter_slidable/flutter_slidable.dart';
22
23
class ContactListPage extends BasePage {
@@ -92,16 +91,19 @@ class ContactPageBody extends StatefulWidget {
91
92
class _ContactPageBodyState extends State<ContactPageBody> with SingleTickerProviderStateMixin {
93
late TabController _tabController;
94
+ late ContactListViewModel contactListViewModel;
95
96
@override
97
void initState() {
98
super.initState();
99
_tabController = TabController(length: 2, vsync: this);
100
+ contactListViewModel = widget.contactListViewModel;
101
}
102
103
@override
104
void dispose() {
105
_tabController.dispose();
106
+ contactListViewModel.dispose();
107
super.dispose();
108
}
109
@@ -306,13 +308,17 @@ class _ContactListBodyState extends State<ContactListBody> {
308
@override
309
void dispose() {
310
widget.tabController.removeListener(_handleTabChange);
309
- widget.contactListViewModel.dispose();
311
+ if (widget.contactListViewModel.settingsStore.contactListOrder == FilterListOrderType.Custom) {
312
+ widget.contactListViewModel.saveCustomOrder();
313
+ }
314
super.dispose();
315
}
316
317
@override
318
Widget build(BuildContext context) {
315
- final contacts = widget.contactListViewModel.contactsToShow;
319
+ final contacts = widget.contactListViewModel.isEditable
320
+ ? widget.contactListViewModel.contacts
321
+ : widget.contactListViewModel.contactsToShow;
322
return Scaffold(
323
body: Container(
324
child: FilteredList(
@@ -351,8 +357,9 @@ class _ContactListBodyState extends State<ContactListBody> {
357
},
358
),
359
),
354
- floatingActionButton:
355
- _isContactsTabActive ? filterButtonWidget(context, widget.contactListViewModel) : null,
360
+ floatingActionButton: _isContactsTabActive && widget.contactListViewModel.isEditable
361
+ ? filterButtonWidget(context, widget.contactListViewModel)
362
+ : null,
363
);
364
}
365
lib/view_model/contact_list/contact_list_view_model.dart
+4
-3
@@ -136,10 +136,11 @@ abstract class ContactListViewModelBase with Store {
136
_currency?.tag == element.type.toString();
137
}
138
139
- void dispose() async {
140
- _subscription?.cancel();
139
+ void dispose() => _subscription?.cancel();
140
+
141
+ void saveCustomOrder() {
142
final List<Contact> contactsSourceCopy = contacts.map((e) => e.original).toList();
142
- await reorderContacts(contactsSourceCopy);
143
+ reorderContacts(contactsSourceCopy);
144
}
145
146
void reorderAccordingToContactList() =>