Skip to content

Commit e363551

Browse files
authored
Merge pull request #164 from leoafarias/polish-improvements
Polish and improvements
2 parents f8685ba + 2c8b180 commit e363551

37 files changed

+152
-139
lines changed

lib/src/components/atoms/console.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -43,11 +43,12 @@ class Console extends HookWidget {
4343
),
4444
secondChild: GestureDetector(
4545
onTap: onExpand,
46-
child: Container(
46+
child: AnimatedContainer(
4747
color: Theme.of(context).brightness == Brightness.dark
4848
? Colors.black45
4949
: const Color(0xFFF5F5F5),
5050
height: expand ? 160 : 40,
51+
duration: Duration(milliseconds: 250),
5152
constraints: expand
5253
? const BoxConstraints(maxHeight: 160)
5354
: const BoxConstraints(maxHeight: 40),

lib/src/components/atoms/copy_button.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter/services.dart';
3-
import 'package:i18next/i18next.dart';
3+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
44
import 'package:sidekick/src/modules/common/utils/notify.dart';
55

66
/// Copy button
@@ -21,7 +21,7 @@ class CopyButton extends StatelessWidget {
2121
icon: const Icon(Icons.content_copy),
2222
onPressed: () async {
2323
await Clipboard.setData(ClipboardData(text: content));
24-
notify(I18Next.of(context).t('components:atoms.copiedToClipboard'));
24+
notify(context.i18n('components:atoms.copiedToClipboard'));
2525
},
2626
);
2727
}

lib/src/components/atoms/empty_dataset.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ class EmptyDataset extends StatelessWidget {
7171
child: ClipRRect(
7272
clipBehavior: Clip.antiAlias,
7373
child: Container(
74-
width: 350,
75-
height: 350,
74+
width: 450,
75+
height: 300,
7676
child: Stack(
7777
children: bgIcons,
7878
),
@@ -82,7 +82,7 @@ class EmptyDataset extends StatelessWidget {
8282
),
8383
Center(
8484
child: Container(
85-
width: 450,
85+
width: 350,
8686
height: 350,
8787
child: child,
8888
),

lib/src/components/atoms/refresh_button.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_hooks/flutter_hooks.dart';
3-
import 'package:i18next/i18next.dart';
43
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
4+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
55

66
/// Refresh button
77
class RefreshButton extends HookWidget {
@@ -38,7 +38,7 @@ class RefreshButton extends HookWidget {
3838
}
3939

4040
return OutlinedButton.icon(
41-
label: Text(I18Next.of(context).t('components:atoms.refresh')),
41+
label: Text(context.i18n('components:atoms.refresh')),
4242
icon: refreshing.value
4343
? renderIndicator()
4444
: const Icon(MdiIcons.refresh, size: 20),

lib/src/components/atoms/sliver_header_delegate.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:flutter/material.dart';
2-
import 'package:i18next/i18next.dart';
2+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
33

44
/// Sliver header delegate
55
class SliverHeaderDelegate extends SliverPersistentHeaderDelegate {
@@ -40,7 +40,7 @@ class SliverHeaderDelegate extends SliverPersistentHeaderDelegate {
4040
title,
4141
),
4242
trailing: Text(
43-
I18Next.of(context).t('components:atoms.countFound', variables: {
43+
context.i18n('components:atoms.countFound', variables: {
4444
'count': count,
4545
}),
4646
),

lib/src/components/molecules/info_banner.dart

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:flutter/material.dart';
2-
import 'package:i18next/i18next.dart';
2+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
33

44
import '../atoms/typography.dart';
55

@@ -26,10 +26,10 @@ class InfoBanner extends StatelessWidget {
2626
child: Row(
2727
children: [
2828
SizedBox(width: 10),
29-
Subheading(I18Next.of(context).t('components:molecules.master')),
29+
Subheading(context.i18n('components:molecules.master')),
3030
SizedBox(width: 20),
3131
Expanded(
32-
child: Caption(I18Next.of(context).t(
32+
child: Caption(context.i18n(
3333
'modules:releases.theCurrentTipoftreeAbsoluteLatestCuttingEdgeBuildUsuallyFunctional')),
3434
),
3535
SizedBox(width: 20),

lib/src/components/molecules/version_install_button.dart

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import 'package:flutter_spinkit/flutter_spinkit.dart';
44
import 'package:hooks_riverpod/hooks_riverpod.dart';
55
import 'package:i18next/i18next.dart';
66
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
7+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
78

89
import '../../modules/common/dto/release.dto.dart';
910
import '../../modules/fvm/fvm_queue.provider.dart';
@@ -17,7 +18,7 @@ class VersionInstallButton extends HookWidget {
1718
@override
1819
Widget build(BuildContext context) {
1920
final installedMsg =
20-
I18Next.of(context).t('components:molecules.versionIsInstalled');
21+
context.i18n('components:molecules.versionIsInstalled');
2122
final notInstalledMsg = I18Next.of(context)
2223
.t('components:molecules.versionNotInstalledClickToInstall');
2324
final isQueued = useState(false);

lib/src/modules/common/app_shell.dart

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import 'package:flutter/material.dart';
33
import 'package:flutter/scheduler.dart';
44
import 'package:flutter_hooks/flutter_hooks.dart';
55
import 'package:hooks_riverpod/hooks_riverpod.dart';
6-
import 'package:i18next/i18next.dart';
76
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
87
import 'package:sidekick/src/components/organisms/app_bottom_bar.dart';
8+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
99
import 'package:sidekick/src/modules/common/utils/indexed_transition_switcher.dart';
1010
import 'package:sidekick/src/modules/search/components/search_bar.dart';
1111
import 'package:sidekick/src/modules/selected_detail/components/info_drawer.dart';
@@ -105,17 +105,17 @@ class AppShell extends HookWidget {
105105
destinations: [
106106
renderNavButton(
107107
context,
108-
I18Next.of(context).t('modules:common.navButtonDashboard'),
108+
context.i18n('modules:common.navButtonDashboard'),
109109
Icons.category,
110110
),
111111
renderNavButton(
112112
context,
113-
I18Next.of(context).t('modules:common.navButtonProjects'),
113+
context.i18n('modules:common.navButtonProjects'),
114114
MdiIcons.folderMultiple,
115115
),
116116
renderNavButton(
117117
context,
118-
I18Next.of(context).t('modules:common.navButtonExplore'),
118+
context.i18n('modules:common.navButtonExplore'),
119119
Icons.explore,
120120
),
121121
],

lib/src/modules/common/constants.dart

+5-7
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import 'package:flutter/material.dart';
2-
import 'package:i18next/i18next.dart';
2+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
33

44
/// Sidekick title
55
const kAppTitle = 'Sidekick';
@@ -33,10 +33,8 @@ const kFlutterTagsUrl = 'https://github.com/flutter/flutter/releases/tag/';
3333

3434
/// Description for the channels
3535
Map<String, String> channelDescriptions(BuildContext context) => {
36-
'stable':
37-
I18Next.of(context).t('modules:common.stableChannelDescription'),
38-
'beta': I18Next.of(context).t('modules:common.betaChannelDescription'),
39-
'dev': I18Next.of(context).t('modules:common.devChannelDescription'),
40-
'master':
41-
I18Next.of(context).t('modules:common.masterChannelDescription'),
36+
'stable': context.i18n('modules:common.stableChannelDescription'),
37+
'beta': context.i18n('modules:common.betaChannelDescription'),
38+
'dev': context.i18n('modules:common.devChannelDescription'),
39+
'master': context.i18n('modules:common.masterChannelDescription'),
4240
};

lib/src/modules/common/utils/helpers.dart

+12
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import 'dart:io';
22

3+
import 'package:flutter/material.dart';
4+
import 'package:i18next/i18next.dart';
35
import 'package:intl/intl.dart';
46
import 'package:path/path.dart' as path;
57
import 'package:path_provider/path_provider.dart';
@@ -31,6 +33,16 @@ extension ExtendedIterable<E> on Iterable<E> {
3133
}
3234
}
3335

36+
extension BuildContextExtension on BuildContext {
37+
String i18n(String key, {Map<String, dynamic> variables}) {
38+
return I18Next.of(this).t(key, variables: variables);
39+
}
40+
41+
Locale get locale {
42+
return I18Next.of(this).locale;
43+
}
44+
}
45+
3446
/// Returns a temp `Directory` for sidekick
3547
/// If [subDirectory] is provided it will add to the path
3648
Future<Directory> getSidekickTempDir({

lib/src/modules/common/utils/open_link.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import 'dart:io';
22

33
import 'package:flutter/widgets.dart';
4-
import 'package:i18next/i18next.dart';
4+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
55
import 'package:url_launcher/url_launcher.dart';
66

77
Future<void> openLink(BuildContext context, String url) async {
88
if (await canLaunch(url)) {
99
await launch(url);
1010
} else {
11-
throw I18Next.of(context).t(
11+
throw context.i18n(
1212
'modules:common.utils.couldNotLaunchUrl',
1313
variables: {'url': url},
1414
);

lib/src/modules/fvm/components/fvm_cache_size.dart

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_hooks/flutter_hooks.dart';
33
import 'package:hooks_riverpod/hooks_riverpod.dart';
4-
import 'package:i18next/i18next.dart';
4+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
55

66
import '../../../components/atoms/typography.dart';
77
import '../../../modules/common/utils/dir_stat.dart';
@@ -51,11 +51,9 @@ class FvmCacheSize extends HookWidget {
5151
Row(
5252
mainAxisAlignment: MainAxisAlignment.spaceBetween,
5353
children: [
54-
Caption(
55-
I18Next.of(context).t('modules:fvm.components.inUse')),
54+
Caption(context.i18n('modules:fvm.components.inUse')),
5655
Caption(cacheSize.friendlySize),
57-
Caption(
58-
I18Next.of(context).t('modules:fvm.components.unused')),
56+
Caption(context.i18n('modules:fvm.components.unused')),
5957
],
6058
)
6159
],

lib/src/modules/fvm/components/fvm_release_actions.dart

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
3-
import 'package:i18next/i18next.dart';
43
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
4+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
55

66
import '../../../components/atoms/typography.dart';
77
import '../../../modules/common/dto/release.dto.dart';
@@ -56,22 +56,21 @@ class FvmReleaseActions extends StatelessWidget {
5656
PopupMenuItem(
5757
value: FvmReleaseActionOptions.global,
5858
child: renderMenuButton(
59-
label: I18Next.of(context).t('modules:fvm.components.setAsGlobal'),
59+
label: context.i18n('modules:fvm.components.setAsGlobal'),
6060
icon: MdiIcons.earth,
6161
),
6262
),
6363
PopupMenuItem(
6464
value: FvmReleaseActionOptions.detail,
6565
child: renderMenuButton(
66-
label:
67-
I18Next.of(context).t('modules:pubPackages.components.details'),
66+
label: context.i18n('modules:pubPackages.components.details'),
6867
icon: MdiIcons.information,
6968
),
7069
),
7170
PopupMenuItem(
7271
value: FvmReleaseActionOptions.remove,
7372
child: renderMenuButton(
74-
label: I18Next.of(context).t('modules:projects.components.remove'),
73+
label: context.i18n('modules:projects.components.remove'),
7574
icon: MdiIcons.delete,
7675
),
7776
),
@@ -84,7 +83,7 @@ class FvmReleaseActions extends StatelessWidget {
8483
PopupMenuItem(
8584
value: FvmReleaseActionOptions.upgrade,
8685
child: renderMenuButton(
87-
label: I18Next.of(context).t('modules:fvm.components.upgrade'),
86+
label: context.i18n('modules:fvm.components.upgrade'),
8887
icon: MdiIcons.update,
8988
),
9089
),

lib/src/modules/fvm/components/fvm_release_list_item.dart

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:hooks_riverpod/hooks_riverpod.dart';
3-
import 'package:i18next/i18next.dart';
43
import 'package:material_design_icons_flutter/material_design_icons_flutter.dart';
4+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
55

66
import '../../../components/atoms/typography.dart';
77
import '../../../components/molecules/list_tile.dart';
@@ -34,8 +34,7 @@ class FvmReleaseListItem extends StatelessWidget {
3434
const SizedBox(width: 20),
3535
release.isGlobal
3636
? ActionChip(
37-
label: Caption(
38-
I18Next.of(context).t('modules:fvm.components.global')),
37+
label: Caption(context.i18n('modules:fvm.components.global')),
3938
avatar: const Icon(MdiIcons.information, size: 20),
4039
onPressed: () {
4140
showGlobalInfoDialog(context);

lib/src/modules/fvm/dialogs/cleanup_unused_dialog.dart

+5-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import 'package:flutter/cupertino.dart';
22
import 'package:flutter/material.dart';
33
import 'package:flutter_riverpod/flutter_riverpod.dart';
44
import 'package:i18next/i18next.dart';
5+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
56

67
import '../../common/utils/notify.dart';
78
import '../fvm.provider.dart';
@@ -31,8 +32,7 @@ Future<void> cleanupUnusedDialog(BuildContext context) async {
3132
onPressed: () {
3233
Navigator.of(context).pop();
3334
},
34-
child:
35-
Text(I18Next.of(context).t('modules:fvm.dialogs.cancel')),
35+
child: Text(context.i18n('modules:fvm.dialogs.cancel')),
3636
),
3737
TextButton(
3838
onPressed: () async {
@@ -47,8 +47,7 @@ Future<void> cleanupUnusedDialog(BuildContext context) async {
4747

4848
Navigator.of(context).pop();
4949
},
50-
child:
51-
Text(I18Next.of(context).t('modules:fvm.dialogs.confirm')),
50+
child: Text(context.i18n('modules:fvm.dialogs.confirm')),
5251
),
5352
],
5453
content: Container(
@@ -58,9 +57,9 @@ Future<void> cleanupUnusedDialog(BuildContext context) async {
5857
child: Column(
5958
children: [
6059
Text(
61-
I18Next.of(context).t(
60+
context.i18n(
6261
'modules:fvm.dialogs.theseVersionAreNotPinnedToAProject') +
63-
I18Next.of(context).t(
62+
context.i18n(
6463
'modules:fvm.dialogs.doYouWantToRemoveThemToFreeUpSpace'),
6564
),
6665
const SizedBox(height: 10),

lib/src/modules/fvm/dialogs/fvm_delete_dialog.dart

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:flutter/material.dart';
22
import 'package:i18next/i18next.dart';
3+
import 'package:sidekick/src/modules/common/utils/helpers.dart';
34

45
import '../../common/dto/release.dto.dart';
56

@@ -17,7 +18,7 @@ void showDeleteDialog(
1718
title: Text(I18Next.of(context)
1819
.t('modules:fvm.dialogs.areYouSureYouWantToRemove')),
1920
content: Text(
20-
I18Next.of(context).t(
21+
context.i18n(
2122
'modules:fvm.dialogs.thisWillRemoveItemnameCacheFromYourSystem',
2223
variables: {
2324
'itemname': item.name,
@@ -31,14 +32,14 @@ void showDeleteDialog(
3132
onPressed: () {
3233
Navigator.of(context).pop();
3334
},
34-
child: Text(I18Next.of(context).t('modules:fvm.dialogs.cancel')),
35+
child: Text(context.i18n('modules:fvm.dialogs.cancel')),
3536
),
3637
TextButton(
3738
onPressed: () async {
3839
Navigator.of(context).pop();
3940
onDelete();
4041
},
41-
child: Text(I18Next.of(context).t('modules:fvm.dialogs.confirm')),
42+
child: Text(context.i18n('modules:fvm.dialogs.confirm')),
4243
),
4344
],
4445
);

0 commit comments

Comments
 (0)