Files
MWClash/lib/views/developer.dart
chen08209 ddc07e9f29 Add android separates the core process
Support core status check and force restart

Optimize proxies page and access page

Update flutter and pub dependencies

Optimize more details
2025-09-17 17:12:11 +08:00

98 lines
2.8 KiB
Dart

import 'package:fl_clash/common/common.dart';
import 'package:fl_clash/core/controller.dart';
import 'package:fl_clash/enum/enum.dart';
import 'package:fl_clash/models/common.dart';
import 'package:fl_clash/providers/app.dart';
import 'package:fl_clash/providers/config.dart';
import 'package:fl_clash/state.dart';
import 'package:fl_clash/widgets/widgets.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
class DeveloperView extends ConsumerWidget {
const DeveloperView({super.key});
Widget _getDeveloperList(BuildContext context, WidgetRef ref) {
return generateSectionV2(
title: appLocalizations.options,
items: [
ListItem(
title: Text(appLocalizations.messageTest),
onTap: () {
context.showNotifier(appLocalizations.messageTestTip);
},
),
ListItem(
title: Text(appLocalizations.logsTest),
onTap: () {
for (int i = 0; i < 1000; i++) {
globalState.appController.addLog(
Log.app(
'[$i]${utils.generateRandomString(maxLength: 200, minLength: 20)}',
),
);
}
},
),
ListItem(
title: Text(appLocalizations.crashTest),
onTap: () {
if (kDebugMode) {
coreController.crash();
}
},
),
ListItem(
title: Text(appLocalizations.clearData),
onTap: () async {
await globalState.appController.handleClear();
},
),
ListItem(
title: Text('Loading'),
onTap: () {
ref.read(loadingProvider.notifier).value = !ref.read(
loadingProvider,
);
},
),
],
);
}
@override
Widget build(BuildContext context, ref) {
final enable = ref.watch(
appSettingProvider.select((state) => state.developerMode),
);
return SingleChildScrollView(
padding: baseInfoEdgeInsets,
child: Column(
children: [
CommonCard(
type: CommonCardType.filled,
radius: 18,
child: ListItem.switchItem(
padding: const EdgeInsets.only(left: 16, right: 16),
title: Text(appLocalizations.developerMode),
delegate: SwitchDelegate(
value: enable,
onChanged: (value) {
ref
.read(appSettingProvider.notifier)
.updateState(
(state) => state.copyWith(developerMode: value),
);
},
),
),
),
SizedBox(height: 16),
_getDeveloperList(context, ref),
],
),
);
}
}