import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:hive/hive.dart'; import 'package:pilipala/utils/storage.dart'; import 'controller.dart'; class StyleSetting extends StatefulWidget { const StyleSetting({super.key}); @override State createState() => _StyleSettingState(); } class _StyleSettingState extends State { final SettingController settingController = Get.put(SettingController()); Box setting = GStrorage.setting; late int picQuality; @override void initState() { super.initState(); picQuality = setting.get(SettingBoxKey.defaultPicQa, defaultValue: 10); } @override Widget build(BuildContext context) { TextStyle titleStyle = Theme.of(context).textTheme.titleMedium!; TextStyle subTitleStyle = Theme.of(context) .textTheme .labelMedium! .copyWith(color: Theme.of(context).colorScheme.outline); return Scaffold( appBar: AppBar( centerTitle: false, titleSpacing: 0, title: Text( '外观设置', style: Theme.of(context).textTheme.titleMedium, ), ), body: ListView( children: [ Obx( () => ListTile( enableFeedback: true, onTap: () => settingController.onOpenFeedBack(), title: const Text('震动反馈'), subtitle: Text('请确定手机设置中已开启震动反馈', style: subTitleStyle), trailing: Transform.scale( scale: 0.8, child: Switch( thumbIcon: MaterialStateProperty.resolveWith( (Set states) { if (states.isNotEmpty && states.first == MaterialState.selected) { return const Icon(Icons.done); } return null; // All other states will use the default thumbIcon. }), value: settingController.feedBackEnable.value, onChanged: (value) => settingController.onOpenFeedBack()), ), ), ), ListTile( dense: false, onTap: () { showDialog( context: context, builder: (context) { return StatefulBuilder( builder: (context, StateSetter setState) { final SettingController settingController = Get.put(SettingController()); return AlertDialog( title: Text('图片清晰度 - $picQuality%', style: titleStyle), contentPadding: const EdgeInsets.only( top: 20, left: 8, right: 8, bottom: 8), content: SizedBox( height: 40, child: Slider( value: picQuality.toDouble(), min: 10, max: 100, divisions: 9, label: '$picQuality%', onChanged: (double val) { picQuality = val.toInt(); setState(() {}); }, ), ), actions: [ TextButton( onPressed: () => Get.back(), child: const Text('取消')), TextButton( onPressed: () { setting.put( SettingBoxKey.defaultPicQa, picQuality); Get.back(); settingController.picQuality.value = picQuality; }, child: const Text('确定'), ) ], ); }, ); }, ); }, title: Text('图片质量', style: titleStyle), subtitle: Text('选择合适的图片清晰度,上限100%', style: subTitleStyle), trailing: Obx( () => Text( '${settingController.picQuality.value}%', style: Theme.of(context).textTheme.titleSmall, ), ), ), ], ), ); } }