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() =>