new: fullscreen rotation angel

This commit is contained in:
lollipopkit
2023-06-27 13:31:35 +08:00
parent 76e8a1efca
commit 92e2e2a75f
10 changed files with 100 additions and 25 deletions

View File

@@ -45,6 +45,7 @@ class _SettingPageState extends State<SettingPage> {
final _editorThemeKey = GlobalKey<PopupMenuButtonState<String>>();
final _editorDarkThemeKey = GlobalKey<PopupMenuButtonState<String>>();
final _keyboardTypeKey = GlobalKey<PopupMenuButtonState<int>>();
final _rotateQuarterKey = GlobalKey<PopupMenuButtonState<int>>();
late final SettingStore _setting;
late final ServerProvider _serverProvider;
@@ -61,6 +62,7 @@ class _SettingPageState extends State<SettingPage> {
final _editorTheme = ValueNotifier('');
final _editorDarkTheme = ValueNotifier('');
final _keyboardType = ValueNotifier(0);
final _rotateQuarter = ValueNotifier(0);
final _pushToken = ValueNotifier<String?>(null);
@@ -86,6 +88,7 @@ class _SettingPageState extends State<SettingPage> {
_editorTheme.value = _setting.editorTheme.fetch()!;
_editorDarkTheme.value = _setting.editorDarkTheme.fetch()!;
_keyboardType.value = _setting.keyboardType.fetch()!;
_rotateQuarter.value = _setting.fullScreenRotateQuarter.fetch()!;
}
@override
@@ -149,6 +152,7 @@ class _SettingPageState extends State<SettingPage> {
children: [
_buildFullScreenSwitch(),
_buildFullScreenJitter(),
_buildFulScreenRotateQuarter(),
].map((e) => RoundRectCard(e)).toList(),
);
}
@@ -730,6 +734,39 @@ class _SettingPageState extends State<SettingPage> {
);
}
Widget _buildFulScreenRotateQuarter() {
final degrees = List.generate(4, (idx) => '${idx * 90}°').toList();
final items = List.generate(4, (idx) {
return PopupMenuItem<int>(
value: idx,
child: Text(degrees[idx]),
);
}).toList();
return ListTile(
title: Text(_s.rotateAngel),
onTap: () {
_rotateQuarterKey.currentState?.showButtonMenu();
},
trailing: ValueBuilder(
listenable: _rotateQuarter,
build: () => PopupMenuButton(
key: _rotateQuarterKey,
itemBuilder: (BuildContext context) => items,
initialValue: _rotateQuarter.value,
onSelected: (int idx) {
_rotateQuarter.value = idx;
_setting.fullScreenRotateQuarter.put(idx);
},
child: Text(
degrees[_rotateQuarter.value],
style: textSize15,
),
),
),
);
}
Widget _buildKeyboardType() {
const List<String> names = <String>[
'text',