add gui animation setting
This commit is contained in:
parent
17f28cfb2f
commit
3a9db2297c
|
@ -0,0 +1,42 @@
|
|||
/// 自动全屏
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../Common.dart';
|
||||
import '../Method.dart';
|
||||
|
||||
const _propertyName = "guiAnimation";
|
||||
late bool _guiAnimation;
|
||||
|
||||
Future<void> initGuiAnimation() async {
|
||||
_guiAnimation = (await method.loadProperty(_propertyName, "true")) == "true";
|
||||
}
|
||||
|
||||
bool currentGuiAnimation() {
|
||||
return _guiAnimation;
|
||||
}
|
||||
|
||||
Future<void> _chooseGuiAnimation(BuildContext context) async {
|
||||
String? result =
|
||||
await chooseListDialog<String>(context, "进入阅读器自动全屏", ["是", "否"]);
|
||||
if (result != null) {
|
||||
var target = result == "是";
|
||||
await method.saveProperty(_propertyName, "$target");
|
||||
_guiAnimation = target;
|
||||
}
|
||||
}
|
||||
|
||||
Widget guiAnimationSetting() {
|
||||
return StatefulBuilder(
|
||||
builder: (BuildContext context, void Function(void Function()) setState) {
|
||||
return ListTile(
|
||||
title: Text("软件界面动画"),
|
||||
subtitle: Text(_guiAnimation ? "是" : "否"),
|
||||
onTap: () async {
|
||||
await _chooseGuiAnimation(context);
|
||||
setState(() {});
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:pikapika/basic/config/GuiAnimation.dart';
|
||||
import 'package:pikapika/basic/config/Version.dart';
|
||||
import 'package:pikapika/screens/components/Badge.dart';
|
||||
|
||||
|
@ -36,19 +37,33 @@ class _AppScreenState extends State<AppScreen> {
|
|||
];
|
||||
|
||||
late int _selectedIndex = 0;
|
||||
PageController _pageController = PageController(initialPage: 0);
|
||||
|
||||
void _onItemTapped(int index) {
|
||||
if (currentGuiAnimation()) {
|
||||
_pageController.animateToPage(
|
||||
index,
|
||||
duration: Duration(milliseconds: 200),
|
||||
curve: Curves.ease,
|
||||
);
|
||||
} else {
|
||||
_pageController.jumpToPage(index);
|
||||
}
|
||||
}
|
||||
|
||||
void _onPageChanged(int index) {
|
||||
setState(() {
|
||||
_selectedIndex = index;
|
||||
this._selectedIndex = index;
|
||||
});
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
body: IndexedStack(
|
||||
index: _selectedIndex,
|
||||
body: PageView(
|
||||
controller: _pageController,
|
||||
children: _widgetOptions,
|
||||
onPageChanged: _onPageChanged,
|
||||
),
|
||||
bottomNavigationBar: BottomNavigationBar(
|
||||
items: <BottomNavigationBarItem>[
|
||||
|
|
|
@ -24,7 +24,12 @@ class CategoriesScreen extends StatefulWidget {
|
|||
State<StatefulWidget> createState() => _CategoriesScreenState();
|
||||
}
|
||||
|
||||
class _CategoriesScreenState extends State<CategoriesScreen> {
|
||||
class _CategoriesScreenState extends State<CategoriesScreen>
|
||||
with AutomaticKeepAliveClientMixin {
|
||||
|
||||
@override
|
||||
bool get wantKeepAlive => true;
|
||||
|
||||
late SearchBar _searchBar = SearchBar(
|
||||
hintText: '搜索',
|
||||
inBar: false,
|
||||
|
|
|
@ -11,6 +11,7 @@ import 'package:pikapika/basic/config/DownloadAndExportPath.dart';
|
|||
import 'package:pikapika/basic/config/DownloadThreadCount.dart';
|
||||
import 'package:pikapika/basic/config/FullScreenAction.dart';
|
||||
import 'package:pikapika/basic/config/FullScreenUI.dart';
|
||||
import 'package:pikapika/basic/config/GuiAnimation.dart';
|
||||
import 'package:pikapika/basic/config/KeyboardController.dart';
|
||||
import 'package:pikapika/basic/config/NoAnimation.dart';
|
||||
import 'package:pikapika/basic/config/PagerAction.dart';
|
||||
|
@ -76,6 +77,7 @@ class _InitScreenState extends State<InitScreen> {
|
|||
await initNoAnimation();
|
||||
await initVersion();
|
||||
autoCheckNewVersion();
|
||||
await initGuiAnimation();
|
||||
// 登录, 如果token失效重新登录, 网络不好的时候可能需要1分钟
|
||||
if (await method.preLogin()) {
|
||||
// 如果token或username+password有效则直接进入登录好的界面
|
||||
|
|
|
@ -13,6 +13,7 @@ import 'package:pikapika/basic/config/DownloadAndExportPath.dart';
|
|||
import 'package:pikapika/basic/config/DownloadThreadCount.dart';
|
||||
import 'package:pikapika/basic/config/FullScreenAction.dart';
|
||||
import 'package:pikapika/basic/config/FullScreenUI.dart';
|
||||
import 'package:pikapika/basic/config/GuiAnimation.dart';
|
||||
import 'package:pikapika/basic/config/KeyboardController.dart';
|
||||
import 'package:pikapika/basic/config/NoAnimation.dart';
|
||||
import 'package:pikapika/basic/config/PagerAction.dart';
|
||||
|
@ -43,11 +44,12 @@ class SettingsScreen extends StatelessWidget {
|
|||
convertToPNGSetting(),
|
||||
readerTypeSetting(),
|
||||
readerDirectionSetting(),
|
||||
noAnimationSetting(),
|
||||
autoFullScreenSetting(),
|
||||
fullScreenActionSetting(),
|
||||
volumeControllerSetting(),
|
||||
keyboardControllerSetting(),
|
||||
noAnimationSetting(),
|
||||
guiAnimationSetting(),
|
||||
Divider(),
|
||||
shadowCategoriesModeSetting(),
|
||||
shadowCategoriesSetting(),
|
||||
|
|
|
@ -21,7 +21,10 @@ class SpaceScreen extends StatefulWidget {
|
|||
State<StatefulWidget> createState() => _SpaceScreenState();
|
||||
}
|
||||
|
||||
class _SpaceScreenState extends State<SpaceScreen> {
|
||||
class _SpaceScreenState extends State<SpaceScreen>
|
||||
with AutomaticKeepAliveClientMixin {
|
||||
@override
|
||||
bool get wantKeepAlive => true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
|
|
Loading…
Reference in New Issue