Add time zone setting, modify default zone +8.
This commit is contained in:
parent
442315a743
commit
6dc77199de
|
@ -1,6 +1,8 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
|
||||||
|
|
||||||
|
import 'config/TimeOffsetHour.dart';
|
||||||
|
|
||||||
double coverWidth = 210;
|
double coverWidth = 210;
|
||||||
double coverHeight = 315;
|
double coverHeight = 315;
|
||||||
|
|
||||||
|
@ -208,7 +210,7 @@ String add0(int num, int len) {
|
||||||
/// 格式化时间 2012-34-56
|
/// 格式化时间 2012-34-56
|
||||||
String formatTimeToDate(String str) {
|
String formatTimeToDate(String str) {
|
||||||
try {
|
try {
|
||||||
var c = DateTime.parse(str);
|
var c = DateTime.parse(str).add(Duration(hours: currentTimeOffsetHour()));
|
||||||
return "${add0(c.year, 4)}-${add0(c.month, 2)}-${add0(c.day, 2)}";
|
return "${add0(c.year, 4)}-${add0(c.month, 2)}-${add0(c.day, 2)}";
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return "-";
|
return "-";
|
||||||
|
@ -218,7 +220,7 @@ String formatTimeToDate(String str) {
|
||||||
/// 格式化时间 2012-34-56 12:34:56
|
/// 格式化时间 2012-34-56 12:34:56
|
||||||
String formatTimeToDateTime(String str) {
|
String formatTimeToDateTime(String str) {
|
||||||
try {
|
try {
|
||||||
var c = DateTime.parse(str);
|
var c = DateTime.parse(str).add(Duration(hours: currentTimeOffsetHour()));
|
||||||
return "${add0(c.year, 4)}-${add0(c.month, 2)}-${add0(c.day, 2)} ${add0(c.hour, 2)}:${add0(c.minute, 2)}";
|
return "${add0(c.year, 4)}-${add0(c.month, 2)}-${add0(c.day, 2)} ${add0(c.hour, 2)}:${add0(c.minute, 2)}";
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return "-";
|
return "-";
|
||||||
|
|
|
@ -7,13 +7,13 @@ import 'package:flutter/material.dart';
|
||||||
import '../Common.dart';
|
import '../Common.dart';
|
||||||
import '../Method.dart';
|
import '../Method.dart';
|
||||||
|
|
||||||
const propertyName = "keyboardController";
|
const _propertyName = "keyboardController";
|
||||||
|
|
||||||
late bool keyboardController;
|
late bool keyboardController;
|
||||||
|
|
||||||
Future<void> initKeyboardController() async {
|
Future<void> initKeyboardController() async {
|
||||||
keyboardController =
|
keyboardController =
|
||||||
(await method.loadProperty(propertyName, "false")) == "true";
|
(await method.loadProperty(_propertyName, "false")) == "true";
|
||||||
}
|
}
|
||||||
|
|
||||||
String keyboardControllerName() {
|
String keyboardControllerName() {
|
||||||
|
@ -25,7 +25,7 @@ Future<void> chooseKeyboardController(BuildContext context) async {
|
||||||
await chooseListDialog<String>(context, "键盘控制翻页", ["是", "否"]);
|
await chooseListDialog<String>(context, "键盘控制翻页", ["是", "否"]);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
var target = result == "是";
|
var target = result == "是";
|
||||||
await method.saveProperty(propertyName, "$target");
|
await method.saveProperty(_propertyName, "$target");
|
||||||
keyboardController = target;
|
keyboardController = target;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import '../Common.dart';
|
||||||
|
import '../Method.dart';
|
||||||
|
|
||||||
|
int _timeOffsetHour = 8;
|
||||||
|
|
||||||
|
int currentTimeOffsetHour() {
|
||||||
|
return _timeOffsetHour;
|
||||||
|
}
|
||||||
|
|
||||||
|
const _propertyName = "timeOffsetHour";
|
||||||
|
|
||||||
|
Future<void> initTimeZone() async {
|
||||||
|
_timeOffsetHour = int.parse(await method.loadProperty(_propertyName, "8"));
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<void> chooseTimeZone(BuildContext context) async {
|
||||||
|
List<String> timeZones = [];
|
||||||
|
for (var i = -12; i <= 12; i++) {
|
||||||
|
var str = i.toString();
|
||||||
|
if (!str.startsWith("-")) {
|
||||||
|
str = "+" + str;
|
||||||
|
}
|
||||||
|
timeZones.add(str);
|
||||||
|
}
|
||||||
|
String? result = await chooseListDialog<String>(context, "时区选择", timeZones);
|
||||||
|
if (result != null) {
|
||||||
|
if (result.startsWith("+")) {
|
||||||
|
result = result.substring(1);
|
||||||
|
}
|
||||||
|
_timeOffsetHour = int.parse(result);
|
||||||
|
await method.saveProperty(_propertyName, "$result");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget timeZoneSetting() {
|
||||||
|
return StatefulBuilder(
|
||||||
|
builder: (BuildContext context, void Function(void Function()) setState) {
|
||||||
|
var c = "$_timeOffsetHour";
|
||||||
|
if (!c.startsWith("-")) {
|
||||||
|
c = "+" + c;
|
||||||
|
}
|
||||||
|
return ListTile(
|
||||||
|
title: Text("时区"),
|
||||||
|
subtitle: Text(c),
|
||||||
|
onTap: () async {
|
||||||
|
await chooseTimeZone(context);
|
||||||
|
setState(() {});
|
||||||
|
},
|
||||||
|
);
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
|
@ -18,6 +18,7 @@ import 'package:pikapi/basic/config/ShadowCategories.dart';
|
||||||
import 'package:pikapi/basic/config/Themes.dart';
|
import 'package:pikapi/basic/config/Themes.dart';
|
||||||
import 'package:pikapi/basic/Method.dart';
|
import 'package:pikapi/basic/Method.dart';
|
||||||
import 'package:pikapi/basic/config/ListLayout.dart';
|
import 'package:pikapi/basic/config/ListLayout.dart';
|
||||||
|
import 'package:pikapi/basic/config/TimeOffsetHour.dart';
|
||||||
import 'package:pikapi/basic/config/VolumeController.dart';
|
import 'package:pikapi/basic/config/VolumeController.dart';
|
||||||
|
|
||||||
import 'AccountScreen.dart';
|
import 'AccountScreen.dart';
|
||||||
|
@ -59,6 +60,7 @@ class _InitScreenState extends State<InitScreen> {
|
||||||
await initKeyboardController();
|
await initKeyboardController();
|
||||||
await initAndroidDisplayMode();
|
await initAndroidDisplayMode();
|
||||||
await initChooserRoot();
|
await initChooserRoot();
|
||||||
|
await initTimeZone();
|
||||||
// 登录, 如果token失效重新登录, 网络不好的时候可能需要1分钟
|
// 登录, 如果token失效重新登录, 网络不好的时候可能需要1分钟
|
||||||
if (await method.preLogin()) {
|
if (await method.preLogin()) {
|
||||||
// 如果token或username+password有效则直接进入登录好的界面
|
// 如果token或username+password有效则直接进入登录好的界面
|
||||||
|
|
|
@ -17,6 +17,7 @@ import 'package:pikapi/basic/config/ReaderType.dart';
|
||||||
import 'package:pikapi/basic/config/Quality.dart';
|
import 'package:pikapi/basic/config/Quality.dart';
|
||||||
import 'package:pikapi/basic/config/ShadowCategories.dart';
|
import 'package:pikapi/basic/config/ShadowCategories.dart';
|
||||||
import 'package:pikapi/basic/config/Themes.dart';
|
import 'package:pikapi/basic/config/Themes.dart';
|
||||||
|
import 'package:pikapi/basic/config/TimeOffsetHour.dart';
|
||||||
import 'package:pikapi/basic/config/VolumeController.dart';
|
import 'package:pikapi/basic/config/VolumeController.dart';
|
||||||
import 'package:pikapi/screens/components/NetworkSetting.dart';
|
import 'package:pikapi/screens/components/NetworkSetting.dart';
|
||||||
|
|
||||||
|
@ -112,6 +113,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
|
||||||
setState(() {});
|
setState(() {});
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
timeZoneSetting(),
|
||||||
Divider(),
|
Divider(),
|
||||||
ListTile(
|
ListTile(
|
||||||
title: Text("自动清理缓存"),
|
title: Text("自动清理缓存"),
|
||||||
|
|
Loading…
Reference in New Issue