Add android separates the core process

Support core status check and force restart

Optimize proxies page and access page

Update flutter and pub dependencies

Update go version

Optimize more details
This commit is contained in:
chen08209
2025-07-31 17:09:18 +08:00
parent e956373ef4
commit ed7868282a
276 changed files with 85260 additions and 80090 deletions

View File

@@ -51,18 +51,14 @@ class AboutView extends StatelessWidget {
ListItem(
title: const Text('Telegram'),
onTap: () {
globalState.openUrl(
'https://t.me/FlClash',
);
globalState.openUrl('https://t.me/FlClash');
},
trailing: const Icon(Icons.launch),
),
ListItem(
title: Text(appLocalizations.project),
onTap: () {
globalState.openUrl(
'https://github.com/$repository',
);
globalState.openUrl('https://github.com/$repository');
},
trailing: const Icon(Icons.launch),
),
@@ -103,13 +99,11 @@ class AboutView extends StatelessWidget {
spacing: 24,
children: [
for (final contributor in contributors)
Avatar(
contributor: contributor,
),
Avatar(contributor: contributor),
],
),
),
)
),
],
);
}
@@ -121,46 +115,50 @@ class AboutView extends StatelessWidget {
title: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Consumer(builder: (_, ref, ___) {
return _DeveloperModeDetector(
child: Wrap(
spacing: 16,
crossAxisAlignment: WrapCrossAlignment.center,
children: [
Padding(
padding: const EdgeInsets.all(12),
child: Image.asset(
'assets/images/icon.png',
width: 64,
height: 64,
),
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
appName,
style: Theme.of(context).textTheme.headlineSmall,
Consumer(
builder: (_, ref, _) {
return _DeveloperModeDetector(
child: Wrap(
spacing: 16,
crossAxisAlignment: WrapCrossAlignment.center,
children: [
Padding(
padding: const EdgeInsets.all(12),
child: Image.asset(
'assets/images/icon.png',
width: 64,
height: 64,
),
Text(
globalState.packageInfo.version,
style: Theme.of(context).textTheme.labelLarge,
)
],
)
],
),
onEnterDeveloperMode: () {
ref.read(appSettingProvider.notifier).updateState(
(state) => state.copyWith(developerMode: true),
);
context.showNotifier(appLocalizations.developerModeEnableTip);
},
);
}),
const SizedBox(
height: 24,
),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
appName,
style: Theme.of(context).textTheme.headlineSmall,
),
Text(
globalState.packageInfo.version,
style: Theme.of(context).textTheme.labelLarge,
),
],
),
],
),
onEnterDeveloperMode: () {
ref
.read(appSettingProvider.notifier)
.updateState(
(state) => state.copyWith(developerMode: true),
);
context.showNotifier(
appLocalizations.developerModeEnableTip,
);
},
);
},
),
const SizedBox(height: 24),
Text(
appLocalizations.desc,
style: Theme.of(context).textTheme.bodySmall,
@@ -168,17 +166,12 @@ class AboutView extends StatelessWidget {
],
),
),
const SizedBox(
height: 12,
),
const SizedBox(height: 12),
..._buildContributorsSection(),
..._buildMoreSection(context),
];
return Padding(
padding: kMaterialListPadding.copyWith(
top: 16,
bottom: 16,
),
padding: kMaterialListPadding.copyWith(top: 16, bottom: 16),
child: generateListView(items),
);
}
@@ -187,10 +180,7 @@ class AboutView extends StatelessWidget {
class Avatar extends StatelessWidget {
final Contributor contributor;
const Avatar({
super.key,
required this.contributor,
});
const Avatar({super.key, required this.contributor});
@override
Widget build(BuildContext context) {
@@ -201,18 +191,11 @@ class Avatar extends StatelessWidget {
width: 36,
height: 36,
child: CircleAvatar(
foregroundImage: AssetImage(
contributor.avatar,
),
foregroundImage: AssetImage(contributor.avatar),
),
),
const SizedBox(
height: 4,
),
Text(
contributor.name,
style: context.textTheme.bodySmall,
)
const SizedBox(height: 4),
Text(contributor.name, style: context.textTheme.bodySmall),
],
),
onTap: () {
@@ -264,9 +247,6 @@ class _DeveloperModeDetectorState extends State<_DeveloperModeDetector> {
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: _handleTap,
child: widget.child,
);
return GestureDetector(onTap: _handleTap, child: widget.child);
}
}