Skip to content

Commit 960b3a7

Browse files
committed
style: some ui changes
1 parent 089c6a2 commit 960b3a7

File tree

9 files changed

+153
-50
lines changed

9 files changed

+153
-50
lines changed

lib/utils/liquid.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class ProgressController extends GetxController {
3232
}
3333

3434
enum BlurStrength {
35+
low(20, 'Low'),
3536
medium(40, 'Medium'),
3637
high(60, 'High'),
3738
veryHigh(100, 'Very High');
@@ -617,12 +618,6 @@ class _ImagePreviewDialogState extends State<_ImagePreviewDialog> {
617618
color: colorScheme.onSurface,
618619
),
619620
),
620-
subtitle: Text(
621-
'Optimized for speed • ~${strength.radius < 50 ? '3-5' : strength.radius < 90 ? '5-7' : '7-10'}s',
622-
style: theme.textTheme.bodySmall?.copyWith(
623-
color: colorScheme.onSurfaceVariant,
624-
),
625-
),
626621
activeColor: colorScheme.primary,
627622
contentPadding:
628623
const EdgeInsets.symmetric(horizontal: 8),

lib/utils/logger.dart

Lines changed: 63 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import 'dart:developer' as developer;
22
import 'dart:io';
33
import 'dart:async';
44
import 'package:anymex/widgets/non_widgets/snackbar.dart';
5+
import 'package:device_info_plus/device_info_plus.dart';
56
import 'package:flutter/foundation.dart';
67
import 'package:flutter/services.dart';
8+
import 'package:package_info_plus/package_info_plus.dart';
79
import 'package:path_provider/path_provider.dart';
810
import 'package:share_plus/share_plus.dart';
911

@@ -38,7 +40,67 @@ class Logger {
3840
});
3941

4042
_isInitialized = true;
41-
_writeLogEntry('=== Logger initialized ===', 'SYSTEM', 500);
43+
44+
final pkg = await PackageInfo.fromPlatform();
45+
46+
final deviceInfo = DeviceInfoPlugin();
47+
String deviceDetails = '';
48+
49+
if (Platform.isAndroid) {
50+
final info = await deviceInfo.androidInfo;
51+
deviceDetails = '''
52+
Device: ${info.manufacturer} ${info.model}
53+
Brand: ${info.brand}
54+
Device ID: ${info.id}
55+
Android Version: ${info.version.release} (SDK ${info.version.sdkInt})
56+
Fingerprint: ${info.fingerprint}
57+
''';
58+
} else if (Platform.isIOS) {
59+
final info = await deviceInfo.iosInfo;
60+
deviceDetails = '''
61+
Device: ${info.name}
62+
Model: ${info.model}
63+
System: ${info.systemName} ${info.systemVersion}
64+
Identifier: ${info.identifierForVendor}
65+
''';
66+
} else if (Platform.isWindows) {
67+
final info = await deviceInfo.windowsInfo;
68+
deviceDetails = '''
69+
Computer Name: ${info.computerName}
70+
Number of Cores: ${info.numberOfCores}
71+
System Memory: ${info.systemMemoryInMegabytes} MB
72+
OS: Windows ${info.displayVersion} (Build ${info.buildNumber})
73+
''';
74+
} else if (Platform.isMacOS) {
75+
final info = await deviceInfo.macOsInfo;
76+
deviceDetails = '''
77+
Model: ${info.model}
78+
CPU: ${info.arch}
79+
OS: macOS ${info.osRelease}
80+
Kernel: ${info.kernelVersion}
81+
''';
82+
} else if (Platform.isLinux) {
83+
final info = await deviceInfo.linuxInfo;
84+
deviceDetails = '''
85+
Name: ${info.name}
86+
Version: ${info.version}
87+
ID: ${info.id}
88+
Architecture: ${info.machineId}
89+
Pretty Name: ${info.prettyName}
90+
''';
91+
}
92+
93+
_writeLogEntry(
94+
'=== Logger initialized ===\n'
95+
'App Info:\n'
96+
'Name: ${pkg.appName}\n'
97+
'Package: ${pkg.packageName}\n'
98+
'Version: ${pkg.version} (Build ${pkg.buildNumber})\n'
99+
'\nDevice Info:\n$deviceDetails'
100+
'==========================',
101+
'SYSTEM',
102+
500,
103+
);
42104
} catch (exception) {
43105
debugPrintSynchronously('Logger init failed: $exception');
44106
}

lib/utils/updater.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import 'dart:io';
33
import 'package:anymex/utils/abi_checker.dart';
44
import 'package:anymex/widgets/non_widgets/snackbar.dart';
55
import 'package:dio/dio.dart';
6+
import 'package:expressive_loading_indicator/expressive_loading_indicator.dart';
67
import 'package:flutter/material.dart';
78
import 'package:get/get.dart';
89
import 'package:http/http.dart' as http;
@@ -545,8 +546,7 @@ class _UpdateBottomSheetState extends State<UpdateBottomSheet>
545546
SizedBox(
546547
width: 20,
547548
height: 20,
548-
child: CircularProgressIndicator(
549-
strokeWidth: 2,
549+
child: ExpressiveLoadingIndicator(
550550
color: colorScheme.primary,
551551
),
552552
),

lib/widgets/common/big_carousel.dart

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,11 @@ class BigCarousel extends StatefulWidget {
3434

3535
class _BigCarouselState extends State<BigCarousel> {
3636
int activeIndex = 0;
37-
final PageController _pageController = PageController();
3837
final CarouselSliderController controller = CarouselSliderController();
3938

4039
@override
4140
Widget build(BuildContext context) {
4241
final newData = widget.data.where((e) => e.cover != null).toList();
43-
final ColorScheme = Theme.of(context).colorScheme;
4442
return Padding(
4543
padding: const EdgeInsets.symmetric(horizontal: 15.0, vertical: 20),
4644
child: Column(
@@ -99,7 +97,7 @@ class _BigCarouselState extends State<BigCarousel> {
9997
children: [
10098
Expanded(
10199
child: Text(
102-
title ?? '??',
100+
title,
103101
overflow: TextOverflow.ellipsis,
104102
),
105103
),
@@ -142,6 +140,7 @@ class _BigCarouselState extends State<BigCarousel> {
142140
),
143141
const SizedBox(height: 10),
144142
Container(
143+
margin: const EdgeInsets.symmetric(horizontal: 8),
145144
padding: const EdgeInsets.symmetric(
146145
horizontal: 16.0, vertical: 8.0),
147146
height: 50,

lib/widgets/common/glow.dart

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,31 @@ import 'package:flutter/material.dart';
99
import 'package:get/get.dart';
1010
import 'package:shimmer/shimmer.dart';
1111

12+
enum GradientVariant {
13+
subtle,
14+
softVignette,
15+
centerFocus,
16+
edgeFade,
17+
warmTone,
18+
coolTone,
19+
dynamicFlow,
20+
minimalDark,
21+
}
22+
1223
class Glow extends StatelessWidget {
1324
final Widget child;
1425
final Alignment begin;
1526
final Alignment end;
1627
final String color;
28+
final bool disabled;
1729

1830
const Glow({
1931
super.key,
2032
required this.child,
2133
this.begin = Alignment.topLeft,
2234
this.end = Alignment.bottomRight,
2335
this.color = '',
36+
this.disabled = false,
2437
});
2538

2639
@override
@@ -34,6 +47,15 @@ class Glow extends StatelessWidget {
3447
),
3548
)
3649
: Theme.of(context).colorScheme;
50+
final isDesktop = !Platform.isAndroid && !Platform.isIOS;
51+
final ch = isDesktop
52+
? Padding(
53+
padding: const EdgeInsets.only(top: 40),
54+
child: child,
55+
)
56+
: child;
57+
58+
if (disabled) return child;
3759

3860
return Obx(() {
3961
settings.liquidBackgroundPath;
@@ -43,13 +65,13 @@ class Glow extends StatelessWidget {
4365
return LiquidMode(
4466
theme: theme,
4567
gradientVariant: GradientVariant.subtle,
46-
child: child,
68+
child: ch,
4769
);
4870
} else {
4971
if (settings.disableGradient) {
50-
return Container(color: theme.surface, child: child);
72+
return Container(color: theme.surface, child: ch);
5173
}
52-
return LightweightGlow(begin: begin, end: end, child: child);
74+
return LightweightGlow(begin: begin, end: end, child: ch);
5375
}
5476
});
5577
}
@@ -102,17 +124,6 @@ class LiquidMode extends StatelessWidget {
102124
}
103125
}
104126

105-
enum GradientVariant {
106-
subtle,
107-
softVignette,
108-
centerFocus,
109-
edgeFade,
110-
warmTone,
111-
coolTone,
112-
dynamicFlow,
113-
minimalDark,
114-
}
115-
116127
class _OptimizedGradientOverlay extends StatelessWidget {
117128
final GradientVariant gradientVariant;
118129
final ColorScheme theme;

lib/widgets/common/reusable_carousel.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ class _ReusableCarouselState extends State<ReusableCarousel> {
144144
}
145145

146146
Widget _buildCarouselItem(CarouselData itemData, int index) {
147-
final String tag = '$index-${getRandomTag()}-${itemData.id}';
147+
final tag = '${itemData.hashCode}-${itemData.id}';
148148

149149
return Obx(() {
150150
final child = AnymexOnTap(

lib/widgets/custom_widgets/anymex_bottomsheet.dart

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,79 @@
1+
import 'package:anymex/controllers/settings/settings.dart';
12
import 'package:anymex/widgets/custom_widgets/custom_text.dart';
3+
import 'package:blur/blur.dart';
24
import 'package:flutter/material.dart';
5+
import 'package:get/get.dart';
36

47
class AnymexSheet extends StatelessWidget {
5-
final String title;
8+
final String? title;
69
final String? message;
710
final Widget? contentWidget;
11+
final Widget? customWidget;
812

913
const AnymexSheet({
1014
super.key,
11-
required this.title,
15+
this.title,
1216
this.message,
1317
this.contentWidget,
18+
this.customWidget,
1419
});
1520

21+
static void custom(Widget widget, BuildContext context) => AnymexSheet(
22+
customWidget: widget,
23+
).show(context);
24+
1625
void show(
1726
BuildContext context,
1827
) {
1928
showModalBottomSheet(
2029
context: context,
30+
// backgroundColor: settingsController.liquidMode
31+
// ? Colors.transparent
32+
// : context.theme.colorScheme.surface,
33+
backgroundColor: context.theme.colorScheme.surface,
2134
builder: (context) => AnymexSheet(
2235
title: title,
2336
message: message,
2437
contentWidget: contentWidget,
38+
customWidget: customWidget,
2539
),
2640
);
2741
}
2842

2943
@override
3044
Widget build(BuildContext context) {
31-
return Container(
32-
width: double.infinity,
33-
padding: const EdgeInsets.all(16.0),
34-
child: Column(
35-
mainAxisSize: MainAxisSize.min,
45+
// final useBlur = settingsController.liquidMode;
46+
final useBlur = false;
47+
return ClipRRect(
48+
borderRadius: const BorderRadius.vertical(top: Radius.circular(30)),
49+
child: Stack(
3650
children: [
37-
AnymexText(text: title, size: 18, variant: TextVariant.bold),
38-
const SizedBox(height: 10),
39-
contentWidget ??
40-
(message != null
41-
? AnymexText(
42-
text: message!, textAlign: TextAlign.center, size: 14)
43-
: const SizedBox.shrink()),
51+
if (useBlur)
52+
Positioned.fill(
53+
child: Blur(
54+
blur: 30,
55+
colorOpacity: 0.05,
56+
blurColor: context.theme.colorScheme.primary,
57+
child: Container())),
58+
if (customWidget != null)
59+
customWidget!
60+
else
61+
Column(
62+
mainAxisSize: MainAxisSize.min,
63+
children: [
64+
if (title != null) ...[
65+
AnymexText(text: title!, size: 18, variant: TextVariant.bold),
66+
const SizedBox(height: 10),
67+
],
68+
contentWidget ??
69+
(message != null
70+
? AnymexText(
71+
text: message!,
72+
textAlign: TextAlign.center,
73+
size: 14)
74+
: const SizedBox.shrink()),
75+
],
76+
),
4477
],
4578
),
4679
);

lib/widgets/custom_widgets/anymex_progress.dart

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import 'package:expressive_loading_indicator/expressive_loading_indicator.dart';
12
import 'package:flutter/material.dart';
23

34
class AnymexProgressIndicator extends StatelessWidget {
@@ -14,11 +15,13 @@ class AnymexProgressIndicator extends StatelessWidget {
1415

1516
@override
1617
Widget build(BuildContext context) {
17-
return CircularProgressIndicator(
18-
value: value,
19-
year2023: false,
20-
strokeWidth: strokeWidth ?? 4,
21-
backgroundColor: backgroundColor,
22-
);
18+
return value != null
19+
? CircularProgressIndicator(
20+
value: value,
21+
year2023: false,
22+
strokeWidth: strokeWidth ?? 4,
23+
backgroundColor: backgroundColor,
24+
)
25+
: const ExpressiveLoadingIndicator();
2326
}
2427
}

package_manager.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ class AppNamePackageManager {
108108
String packageName = basePackageName;
109109

110110
// Get app name from Android manifest
111-
final androidManifestPath = 'android/app/src/main/AndroidManifest.xml';
111+
const androidManifestPath = 'android/app/src/main/AndroidManifest.xml';
112112
if (await File(androidManifestPath).exists()) {
113113
final manifestContent = await File(androidManifestPath).readAsString();
114114

@@ -128,7 +128,7 @@ class AppNamePackageManager {
128128
}
129129

130130
// Fallback: try to get app name from strings.xml
131-
final stringsPath = 'android/app/src/main/res/values/strings.xml';
131+
const stringsPath = 'android/app/src/main/res/values/strings.xml';
132132
if (await File(stringsPath).exists()) {
133133
final stringsContent = await File(stringsPath).readAsString();
134134
final appNameMatch = RegExp(r'<string name="app_name">([^<]+)</string>')
@@ -139,7 +139,7 @@ class AppNamePackageManager {
139139
}
140140

141141
// Alternative fallback: check iOS Info.plist for app name
142-
final infoPlistPath = 'ios/Runner/Info.plist';
142+
const infoPlistPath = 'ios/Runner/Info.plist';
143143
if (await File(infoPlistPath).exists()) {
144144
final plistContent = await File(infoPlistPath).readAsString();
145145

0 commit comments

Comments
 (0)