Skip to content

Commit 7667851

Browse files
author
Clement Guyon
committed
refacto: replace hardcoded widget keys with type-safe enums
1 parent 36f47fb commit 7667851

31 files changed

+190
-143
lines changed

integration_test/extensions/default_flows.dart

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'dart:developer';
22

33
import 'package:fluffychat/pages/chat_list/chat_list_body_view.dart';
44
import 'package:fluffychat/pages/homeserver_picker/homeserver_picker.dart';
5+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
56
import 'package:flutter/material.dart';
67
import 'package:flutter_test/flutter_test.dart';
78

@@ -34,16 +35,6 @@ extension DefaultFlowExtensions on WidgetTester {
3435
// try {
3536
await Future.delayed(const Duration(milliseconds: 50));
3637

37-
await tester.scrollUntilVisible(
38-
find.text('Login'),
39-
500,
40-
scrollable: find.descendant(
41-
of: find.byKey(const Key('ConnectPageListView')),
42-
matching: find.byType(Scrollable).first,
43-
),
44-
);
45-
await tester.pumpAndSettle();
46-
4738
await tester.tap(find.text('Login'));
4839
await tester.pumpAndSettle();
4940
/*} catch (e) {
@@ -114,7 +105,7 @@ extension DefaultFlowExtensions on WidgetTester {
114105
find.text('Account'),
115106
500,
116107
scrollable: find.descendant(
117-
of: find.byKey(const Key('SettingsListViewContent')),
108+
of: find.byKey(SettingsKeys.listViewContent.key),
118109
matching: find.byType(Scrollable),
119110
),
120111
);

integration_test/robots/home_robot.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
12
import 'package:fluffychat/widgets/twake_components/twake_navigation_icon/twake_navigation_icon.dart';
2-
import 'package:flutter/material.dart';
3+
import 'package:flutter_test/flutter_test.dart';
34
import 'package:patrol/patrol.dart';
45
import '../base/core_robot.dart';
56
import 'chat_list_robot.dart';
@@ -18,7 +19,7 @@ class HomeRobot extends CoreRobot {
1819
}
1920

2021
Future<PatrolFinder> getSettingTab() async {
21-
return $(const Key('settings_navigation_destination'));
22+
return $(find.byKey(NavigationKeys.settingsDestination.key));
2223
}
2324

2425
Future<ContactListRobot> gotoContactListScreen() async {

integration_test/robots/setting/settings_privacy_and_security_robot.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:fluffychat/pages/settings_dashboard/settings_contacts_visibility/settings_contacts_visibility_view.dart';
2-
import 'package:flutter/cupertino.dart';
2+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
3+
import 'package:flutter_test/flutter_test.dart';
34
import 'package:patrol/patrol.dart';
45

56
import '../home_robot.dart';
@@ -8,7 +9,7 @@ class SettingsPrivacyAndSecurityRobot extends HomeRobot {
89
SettingsPrivacyAndSecurityRobot(super.$);
910

1011
PatrolFinder contactVisibilitySetting() {
11-
return $(const Key('contacts_visibility_settings_item'));
12+
return $(find.byKey(SettingsKeys.contactsVisibilityItem.key));
1213
}
1314

1415
Future<void> openContactVisibilitySetting() async {

lib/pages/bootstrap/init_client_dialog.dart

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'dart:async';
2+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
23
import 'package:fluffychat/pages/bootstrap/tom_bootstrap_dialog_mobile_view.dart';
34
import 'package:fluffychat/pages/bootstrap/tom_bootstrap_dialog_web_view.dart';
45
import 'package:fluffychat/presentation/model/client_login_state_event.dart';
@@ -27,14 +28,6 @@ class _InitClientDialogState extends State<InitClientDialog>
2728

2829
StreamSubscription? _clientLoginStateChangedSubscription;
2930

30-
static const breakpointMobileDialogKey = Key(
31-
'BreakPointMobileInitClientDialog',
32-
);
33-
34-
static const breakpointWebAndDesktopDialogKey = Key(
35-
'BreakpointWebAndDesktopKeyInitClientDialog',
36-
);
37-
3831
@override
3932
void initState() {
4033
_initial();
@@ -152,15 +145,15 @@ class _InitClientDialogState extends State<InitClientDialog>
152145
const WidthPlatformBreakpoint(
153146
end: ResponsiveUtils.maxMobileWidth,
154147
): SlotLayout.from(
155-
key: breakpointMobileDialogKey,
148+
key: DialogKeys.initClientBreakpointMobile.key,
156149
builder: (_) => TomBootstrapDialogMobileView(
157150
description: L10n.of(context)!.backingUpYourMessage,
158151
),
159152
),
160153
const WidthPlatformBreakpoint(
161154
begin: ResponsiveUtils.minTabletWidth,
162155
): SlotLayout.from(
163-
key: breakpointWebAndDesktopDialogKey,
156+
key: DialogKeys.initClientBreakpointWebAndDesktop.key,
164157
builder: (_) => TomBootstrapDialogWebView(
165158
description: L10n.of(context)!.backingUpYourMessage,
166159
),

lib/pages/bootstrap/tom_bootstrap_dialog.dart

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:fluffychat/di/global/dio_cache_interceptor_for_client.dart';
2+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
23
import 'package:fluffychat/di/global/get_it_initializer.dart';
34
import 'package:fluffychat/domain/model/recovery_words/recovery_words.dart';
45
import 'package:fluffychat/domain/usecase/recovery/delete_recovery_words_interactor.dart';
@@ -47,12 +48,6 @@ class TomBootstrapDialogState extends State<TomBootstrapDialog>
4748
final _deleteRecoveryWordsInteractor = getIt
4849
.get<DeleteRecoveryWordsInteractor>();
4950

50-
static const breakpointMobileDialogKey = Key('BreakPointMobileDialog');
51-
52-
static const breakpointWebAndDesktopDialogKey = Key(
53-
'BreakpointWebAndDesktopKeyDialog',
54-
);
55-
5651
static const Duration getRecoveryWordsDelay = Duration(seconds: 5);
5752

5853
Bootstrap? bootstrap;
@@ -257,14 +252,14 @@ class TomBootstrapDialogState extends State<TomBootstrapDialog>
257252
const WidthPlatformBreakpoint(
258253
end: ResponsiveUtils.maxMobileWidth,
259254
): SlotLayout.from(
260-
key: breakpointMobileDialogKey,
255+
key: DialogKeys.bootstrapBreakpointMobile.key,
261256
builder: (_) =>
262257
TomBootstrapDialogMobileView(description: _description),
263258
),
264259
const WidthPlatformBreakpoint(
265260
begin: ResponsiveUtils.minTabletWidth,
266261
): SlotLayout.from(
267-
key: breakpointWebAndDesktopDialogKey,
262+
key: DialogKeys.bootstrapBreakpointWebAndDesktop.key,
268263
builder: (_) => TomBootstrapDialogWebView(description: _description),
269264
),
270265
},

lib/pages/chat/chat.dart

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import 'package:fluffychat/pages/chat/dialog_reject_invite_widget.dart';
3131
import 'package:fluffychat/pages/chat/events/message_content_mixin.dart';
3232
import 'package:fluffychat/pages/chat/input_bar/focus_suggestion_controller.dart';
3333
import 'package:fluffychat/presentation/enum/chat/right_column_type_enum.dart';
34+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
3435
import 'package:fluffychat/presentation/enum/chat/send_media_with_caption_status_enum.dart';
3536
import 'package:fluffychat/presentation/extensions/client_extension.dart';
3637
import 'package:fluffychat/presentation/extensions/event_update_extension.dart';
@@ -184,13 +185,11 @@ class ChatController extends State<Chat>
184185
final storeRecentReactionsInteractor = getIt
185186
.get<StoreRecentReactionsInteractor>();
186187

187-
final ValueKey chatComposerTypeAheadKey = const ValueKey(
188-
'chatComposerTypeAheadKey',
189-
);
188+
final ValueKey<String> chatComposerTypeAheadKey =
189+
ChatKeys.composerTypeAhead.valueKey;
190190

191-
final ValueKey _chatMediaPickerTypeAheadKey = const ValueKey(
192-
'chatMediaPickerTypeAheadKey',
193-
);
191+
final ValueKey<String> _chatMediaPickerTypeAheadKey =
192+
ChatKeys.mediaPickerTypeAhead.valueKey;
194193

195194
StreamSubscription? onUpdateEventStreamSubcription;
196195

lib/pages/chat/chat_scroll_view.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:fluffychat/config/themes.dart';
2+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
23
import 'package:fluffychat/pages/chat/chat.dart';
34
import 'package:fluffychat/pages/chat/chat_event_list_item.dart';
45
import 'package:fluffychat/utils/matrix_sdk_extensions/event_list_extension.dart';
@@ -102,7 +103,7 @@ class _ChatScrollViewState extends State<ChatScrollView> {
102103

103104
@override
104105
Widget build(BuildContext context) {
105-
const centerKey = ValueKey('ChatEventList-center-key');
106+
final centerKey = ChatKeys.eventListCenter.valueKey;
106107
final horizontalPadding = TwakeThemes.isColumnMode(context) ? 16.0 : 0.0;
107108

108109
return Padding(

lib/pages/chat/send_file_dialog/send_file_dialog.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:fluffychat/domain/usecase/generate_thumbnails_media_interactor.d
77
import 'package:fluffychat/pages/chat/input_bar/focus_suggestion_controller.dart';
88
import 'package:fluffychat/pages/chat/send_file_dialog/send_file_dialog_view.dart';
99
import 'package:fluffychat/presentation/list_notifier.dart';
10+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
1011
import 'package:fluffychat/utils/manager/upload_manager/upload_manager.dart';
1112
import 'package:fluffychat/utils/matrix_sdk_extensions/matrix_file_extension.dart';
1213
import 'package:fluffychat/presentation/enum/chat/send_media_with_caption_status_enum.dart';
@@ -53,9 +54,8 @@ class SendFileDialogController extends State<SendFileDialog> {
5354

5455
final FocusNode captionsFocusNode = FocusNode();
5556

56-
final ValueKey sendFileDialogTypeAheadKey = const ValueKey(
57-
'sendFileDialogTypeAhead',
58-
);
57+
final ValueKey<String> sendFileDialogTypeAheadKey =
58+
ChatKeys.sendFileDialogTypeAhead.valueKey;
5959

6060
bool isSendMediaWithCaption = true;
6161

lib/pages/chat_adaptive_scaffold/chat_adaptive_scaffold_builder.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:fluffychat/presentation/enum/chat/right_column_type_enum.dart';
2+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
23
import 'package:fluffychat/utils/platform_infos.dart';
34
import 'package:fluffychat/utils/responsive/responsive_utils.dart';
4-
import 'package:fluffychat/widgets/layouts/adaptive_layout/app_adaptive_scaffold.dart';
55
import 'package:flutter/cupertino.dart';
66
import 'package:flutter/material.dart';
77
import 'package:flutter_adaptive_scaffold/flutter_adaptive_scaffold.dart';
@@ -78,7 +78,7 @@ class ChatAdaptiveScaffoldBuilderController
7878
body: SlotLayout(
7979
config: {
8080
WidthPlatformBreakpoint(end: breakpoint): SlotLayout.from(
81-
key: AppAdaptiveScaffold.breakpointMobileKey,
81+
key: NavigationKeys.breakpointMobile.key,
8282
builder: (_) => Stack(
8383
children: [
8484
body!,
@@ -92,7 +92,7 @@ class ChatAdaptiveScaffoldBuilderController
9292
),
9393
),
9494
WidthPlatformBreakpoint(begin: breakpoint): SlotLayout.from(
95-
key: AppAdaptiveScaffold.breakpointWebAndDesktopKey,
95+
key: NavigationKeys.breakpointWebAndDesktop.key,
9696
builder: (_) => Container(
9797
decoration: BoxDecoration(
9898
border: Border(
@@ -113,13 +113,13 @@ class ChatAdaptiveScaffoldBuilderController
113113
? SlotLayout(
114114
config: {
115115
WidthPlatformBreakpoint(end: breakpoint): SlotLayout.from(
116-
key: AppAdaptiveScaffold.breakpointMobileKey,
116+
key: NavigationKeys.breakpointMobile.key,
117117
builder: null,
118118
),
119119
WidthPlatformBreakpoint(
120120
begin: breakpoint,
121121
): SlotLayout.from(
122-
key: AppAdaptiveScaffold.breakpointWebAndDesktopKey,
122+
key: NavigationKeys.breakpointWebAndDesktop.key,
123123
builder: (_) => widget.rightBuilder(
124124
this,
125125
isInStack: false,

lib/pages/chat_details/chat_details.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:fluffychat/domain/model/room/room_extension.dart';
2+
import 'package:fluffychat/presentation/widget_keys/widget_keys.dart';
23
import 'package:fluffychat/generated/l10n/app_localizations.dart';
34
import 'package:fluffychat/pages/chat_details/chat_details_edit.dart';
45
import 'package:fluffychat/pages/chat_details/chat_details_view.dart';
@@ -46,9 +47,9 @@ class ChatDetailsController extends State<ChatDetails>
4647
TickerProviderStateMixin,
4748
ChatDetailsTabMixin<ChatDetails>,
4849
TwakeContextMenuMixin {
49-
final actionsMobileAndTabletKey = const Key('ActionsMobileAndTabletKey');
50+
final actionsMobileAndTabletKey = ChatKeys.actionsMobileAndTablet.key;
5051

51-
final actionsWebAndDesktopKey = const Key('ActionsWebAndDesktopKey');
52+
final actionsWebAndDesktopKey = ChatKeys.actionsWebAndDesktop.key;
5253

5354
final muteNotifier = ValueNotifier<PushRuleState>(PushRuleState.notify);
5455

0 commit comments

Comments
 (0)