Add time zone setting, modify default zone +8.

This commit is contained in:
niuhuan 2021-10-19 14:28:12 +08:00
parent 442315a743
commit 6dc77199de
5 changed files with 65 additions and 5 deletions

View File

@ -1,6 +1,8 @@
import 'package:flutter/material.dart';
import 'package:flutter_styled_toast/flutter_styled_toast.dart';
import 'config/TimeOffsetHour.dart';
double coverWidth = 210;
double coverHeight = 315;
@ -208,7 +210,7 @@ String add0(int num, int len) {
/// 2012-34-56
String formatTimeToDate(String str) {
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)}";
} catch (e) {
return "-";
@ -218,7 +220,7 @@ String formatTimeToDate(String str) {
/// 2012-34-56 12:34:56
String formatTimeToDateTime(String str) {
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)}";
} catch (e) {
return "-";

View File

@ -7,13 +7,13 @@ import 'package:flutter/material.dart';
import '../Common.dart';
import '../Method.dart';
const propertyName = "keyboardController";
const _propertyName = "keyboardController";
late bool keyboardController;
Future<void> initKeyboardController() async {
keyboardController =
(await method.loadProperty(propertyName, "false")) == "true";
(await method.loadProperty(_propertyName, "false")) == "true";
}
String keyboardControllerName() {
@ -25,7 +25,7 @@ Future<void> chooseKeyboardController(BuildContext context) async {
await chooseListDialog<String>(context, "键盘控制翻页", ["", ""]);
if (result != null) {
var target = result == "";
await method.saveProperty(propertyName, "$target");
await method.saveProperty(_propertyName, "$target");
keyboardController = target;
}
}

View File

@ -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(() {});
},
);
},
);
}

View File

@ -18,6 +18,7 @@ import 'package:pikapi/basic/config/ShadowCategories.dart';
import 'package:pikapi/basic/config/Themes.dart';
import 'package:pikapi/basic/Method.dart';
import 'package:pikapi/basic/config/ListLayout.dart';
import 'package:pikapi/basic/config/TimeOffsetHour.dart';
import 'package:pikapi/basic/config/VolumeController.dart';
import 'AccountScreen.dart';
@ -59,6 +60,7 @@ class _InitScreenState extends State<InitScreen> {
await initKeyboardController();
await initAndroidDisplayMode();
await initChooserRoot();
await initTimeZone();
// , token失效重新登录, 1
if (await method.preLogin()) {
// token或username+password有效则直接进入登录好的界面

View File

@ -17,6 +17,7 @@ import 'package:pikapi/basic/config/ReaderType.dart';
import 'package:pikapi/basic/config/Quality.dart';
import 'package:pikapi/basic/config/ShadowCategories.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/screens/components/NetworkSetting.dart';
@ -112,6 +113,7 @@ class _SettingsScreenState extends State<SettingsScreen> {
setState(() {});
},
),
timeZoneSetting(),
Divider(),
ListTile(
title: Text("自动清理缓存"),