opt: code

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2024-12-08 14:07:48 +08:00
parent 7cdfe26a26
commit 63a12ba6ed
22 changed files with 65 additions and 61 deletions

View File

@@ -1,3 +1,4 @@
import 'package:PiliPalaX/utils/extension.dart';
import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/storage.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -67,7 +68,7 @@ class AuthorPanel extends StatelessWidget {
color: item.modules.moduleAuthor!.vip != null && color: item.modules.moduleAuthor!.vip != null &&
item.modules.moduleAuthor!.vip['status'] > 0 && item.modules.moduleAuthor!.vip['status'] > 0 &&
item.modules.moduleAuthor!.vip['type'] == 2 item.modules.moduleAuthor!.vip['type'] == 2
? Utils.vipColor ? context.vipColor
: Theme.of(context).colorScheme.onSurface, : Theme.of(context).colorScheme.onSurface,
fontSize: Theme.of(context).textTheme.titleSmall!.fontSize, fontSize: Theme.of(context).textTheme.titleSmall!.fontSize,
), ),

View File

@@ -1,4 +1,5 @@
import 'package:PiliPalaX/grpc/app/dynamic/v2/dynamic.pb.dart' as dyn; import 'package:PiliPalaX/grpc/app/dynamic/v2/dynamic.pb.dart' as dyn;
import 'package:PiliPalaX/utils/extension.dart';
import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/storage.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -68,7 +69,7 @@ class AuthorPanelGrpc extends StatelessWidget {
color: item.modules.first.moduleAuthor.author.vip.status > color: item.modules.first.moduleAuthor.author.vip.status >
0 && 0 &&
item.modules.first.moduleAuthor.author.vip.type == 2 item.modules.first.moduleAuthor.author.vip.type == 2
? Utils.vipColor ? context.vipColor
: Theme.of(context).colorScheme.onSurface, : Theme.of(context).colorScheme.onSurface,
fontSize: Theme.of(context).textTheme.titleSmall!.fontSize, fontSize: Theme.of(context).textTheme.titleSmall!.fontSize,
), ),

View File

@@ -140,7 +140,7 @@ class _LiveRoomChatState extends State<LiveRoomChat> {
TextSpan( TextSpan(
text: nonMatchStr, text: nonMatchStr,
style: const TextStyle( style: const TextStyle(
color: Color(0xFFFFFFFF), color: Colors.white,
fontSize: 14, fontSize: 14,
), ),
), ),
@@ -153,7 +153,7 @@ class _LiveRoomChatState extends State<LiveRoomChat> {
return TextSpan( return TextSpan(
text: obj['text'], text: obj['text'],
style: const TextStyle( style: const TextStyle(
color: Color(0xFFFFFFFF), color: Colors.white,
fontSize: 14, fontSize: 14,
), ),
); );

View File

@@ -66,7 +66,7 @@ class UserInfoCard extends StatelessWidget {
} }
_buildHeader(BuildContext context) { _buildHeader(BuildContext context) {
bool darken = GStorage.brightness == Brightness.dark; bool darken = Theme.of(context).brightness == Brightness.dark;
String? imgUrl = darken String? imgUrl = darken
? (images.nightImgurl?.isEmpty == true ? (images.nightImgurl?.isEmpty == true
? images.imgUrl?.http2https ? images.imgUrl?.http2https
@@ -123,7 +123,7 @@ class UserInfoCard extends StatelessWidget {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
color: (card.vip?.vipStatus ?? -1) > 0 && color: (card.vip?.vipStatus ?? -1) > 0 &&
card.vip?.vipType == 2 card.vip?.vipType == 2
? Utils.vipColor ? context.vipColor
: null, : null,
), ),
), ),

View File

@@ -1,6 +1,7 @@
import 'dart:async'; import 'dart:async';
import 'package:PiliPalaX/http/member.dart'; import 'package:PiliPalaX/http/member.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -400,7 +401,7 @@ class _MemberPageState extends State<MemberPage>
_memberController.memberInfo.value.vip!.status! > _memberController.memberInfo.value.vip!.status! >
0 && 0 &&
_memberController.memberInfo.value.vip!.type == 2 _memberController.memberInfo.value.vip!.type == 2
? Utils.vipColor ? context.vipColor
: Theme.of(context).colorScheme.onSurface, : Theme.of(context).colorScheme.onSurface,
), ),
)), )),

View File

@@ -75,7 +75,7 @@ class MemberCoinsItem extends StatelessWidget {
), ),
const Spacer(), const Spacer(),
Text( Text(
Utils.CustomStamp_str( Utils.customStampStr(
timestamp: coinItem.pubdate, date: 'MM-DD'), timestamp: coinItem.pubdate, date: 'MM-DD'),
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,

View File

@@ -7,6 +7,7 @@ import 'package:PiliPalaX/common/widgets/refresh_indicator.dart';
import 'package:PiliPalaX/http/dynamics.dart'; import 'package:PiliPalaX/http/dynamics.dart';
import 'package:PiliPalaX/http/loading_state.dart'; import 'package:PiliPalaX/http/loading_state.dart';
import 'package:PiliPalaX/pages/member_search/controller.dart'; import 'package:PiliPalaX/pages/member_search/controller.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:PiliPalaX/utils/grid.dart'; import 'package:PiliPalaX/utils/grid.dart';
import 'package:PiliPalaX/utils/id_utils.dart'; import 'package:PiliPalaX/utils/id_utils.dart';
import 'package:PiliPalaX/utils/storage.dart'; import 'package:PiliPalaX/utils/storage.dart';
@@ -143,7 +144,7 @@ class SearchDynamic extends StatelessWidget {
color: vip != null color: vip != null
? (vip?['status'] ?? vip?['vipStatus']) > 0 && ? (vip?['status'] ?? vip?['vipStatus']) > 0 &&
(vip?['type'] ?? vip?['vipType']) == 2 (vip?['type'] ?? vip?['vipType']) == 2
? Utils.vipColor ? context.vipColor
: null : null
: null, : null,
fontSize: Theme.of(context).textTheme.titleSmall!.fontSize, fontSize: Theme.of(context).textTheme.titleSmall!.fontSize,

View File

@@ -51,7 +51,7 @@ class MemberSeasonsItem extends StatelessWidget {
bottom: 6, bottom: 6,
right: 6, right: 6,
type: 'gray', type: 'gray',
text: Utils.CustomStamp_str( text: Utils.customStampStr(
timestamp: seasonItem.pubdate, date: 'YY-MM-DD'), timestamp: seasonItem.pubdate, date: 'YY-MM-DD'),
) )
], ],
@@ -79,7 +79,7 @@ class MemberSeasonsItem extends StatelessWidget {
), ),
const Spacer(), const Spacer(),
Text( Text(
Utils.CustomStamp_str( Utils.customStampStr(
timestamp: seasonItem.pubdate, date: 'YY-MM-DD'), timestamp: seasonItem.pubdate, date: 'YY-MM-DD'),
style: TextStyle( style: TextStyle(
fontSize: 11, fontSize: 11,

View File

@@ -1,4 +1,3 @@
import 'package:PiliPalaX/utils/global_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
@@ -195,7 +194,6 @@ class MineController extends GetxController {
onChangeTheme() { onChangeTheme() {
themeType.value = nextThemeType; themeType.value = nextThemeType;
setting.put(SettingBoxKey.themeMode, themeType.value.code); setting.put(SettingBoxKey.themeMode, themeType.value.code);
GlobalData().themeMode = themeType.value.code;
Get.forceAppUpdate(); Get.forceAppUpdate();
} }

View File

@@ -1,6 +1,4 @@
// ignore_for_file: no_leading_underscores_for_local_identifiers import 'package:PiliPalaX/utils/storage.dart';
import 'package:PiliPalaX/utils/global_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:PiliPalaX/common/constants.dart'; import 'package:PiliPalaX/common/constants.dart';
@@ -19,7 +17,7 @@ class MinePage extends StatefulWidget {
class _MinePageState extends State<MinePage> { class _MinePageState extends State<MinePage> {
final MineController mineController = Get.put(MineController()) final MineController mineController = Get.put(MineController())
..themeType.value = ThemeType.values[GlobalData().themeMode]; ..themeType.value = ThemeType.values[GStorage.themeType];
late Future _futureBuilderFuture; late Future _futureBuilderFuture;
@override @override

View File

@@ -1,4 +1,3 @@
import 'package:PiliPalaX/utils/global_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart'; import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
@@ -44,7 +43,7 @@ class SettingController extends GetxController {
setting.get(SettingBoxKey.defaultToastOp, defaultValue: 1.0); setting.get(SettingBoxKey.defaultToastOp, defaultValue: 1.0);
picQuality.value = picQuality.value =
setting.get(SettingBoxKey.defaultPicQa, defaultValue: 10); setting.get(SettingBoxKey.defaultPicQa, defaultValue: 10);
themeType.value = ThemeType.values[GlobalData().themeMode]; themeType.value = ThemeType.values[GStorage.themeType];
dynamicBadgeType.value = DynamicBadgeMode.values[setting.get( dynamicBadgeType.value = DynamicBadgeMode.values[setting.get(
SettingBoxKey.dynamicBadgeMode, SettingBoxKey.dynamicBadgeMode,
defaultValue: DynamicBadgeMode.number.code)]; defaultValue: DynamicBadgeMode.number.code)];

View File

@@ -308,7 +308,6 @@ class _StyleSettingState extends State<StyleSetting> {
_tempThemeValue = result; _tempThemeValue = result;
settingController.themeType.value = result; settingController.themeType.value = result;
setting.put(SettingBoxKey.themeMode, result.index); setting.put(SettingBoxKey.themeMode, result.index);
GlobalData().themeMode = result.index;
Get.forceAppUpdate(); Get.forceAppUpdate();
} }
}, },

View File

@@ -366,7 +366,7 @@ class _VideoInfoState extends State<VideoInfo> with TickerProviderStateMixin {
.vip .vip
.type == .type ==
2 2
? Utils.vipColor ? context.vipColor
: null, : null,
), ),
), ),

View File

@@ -1,5 +1,6 @@
import 'package:PiliPalaX/common/widgets/imageview.dart'; import 'package:PiliPalaX/common/widgets/imageview.dart';
import 'package:PiliPalaX/http/video.dart'; import 'package:PiliPalaX/http/video.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -192,7 +193,7 @@ class ReplyItem extends StatelessWidget {
style: TextStyle( style: TextStyle(
color: (replyItem!.member!.vip!['vipStatus'] > 0 && color: (replyItem!.member!.vip!['vipStatus'] > 0 &&
replyItem!.member!.vip!['vipType'] == 2) replyItem!.member!.vip!['vipType'] == 2)
? Utils.vipColor ? context.vipColor
: Theme.of(context).colorScheme.outline, : Theme.of(context).colorScheme.outline,
fontSize: 13, fontSize: 13,
), ),

View File

@@ -5,6 +5,7 @@ import 'package:PiliPalaX/common/widgets/imageview.dart';
import 'package:PiliPalaX/grpc/app/main/community/reply/v1/reply.pb.dart'; import 'package:PiliPalaX/grpc/app/main/community/reply/v1/reply.pb.dart';
import 'package:PiliPalaX/http/video.dart'; import 'package:PiliPalaX/http/video.dart';
import 'package:PiliPalaX/pages/video/detail/reply/widgets/zan_grpc.dart'; import 'package:PiliPalaX/pages/video/detail/reply/widgets/zan_grpc.dart';
import 'package:PiliPalaX/utils/extension.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
@@ -202,7 +203,7 @@ class ReplyItemGrpc extends StatelessWidget {
style: TextStyle( style: TextStyle(
color: (replyItem.member.vipStatus > 0 && color: (replyItem.member.vipStatus > 0 &&
replyItem.member.vipType == 2) replyItem.member.vipType == 2)
? Utils.vipColor ? context.vipColor
: Theme.of(context).colorScheme.outline, : Theme.of(context).colorScheme.outline,
fontSize: 13, fontSize: 13,
), ),

View File

@@ -568,7 +568,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
: plPlayerController.subtitleFontScale.value), : plPlayerController.subtitleFontScale.value),
letterSpacing: 0.1, letterSpacing: 0.1,
wordSpacing: 0.1, wordSpacing: 0.1,
color: Color(0xffffffff), color: Colors.white,
fontWeight: FontWeight.normal, fontWeight: FontWeight.normal,
backgroundColor: Color(0xaa000000), backgroundColor: Color(0xaa000000),
); );
@@ -865,7 +865,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
: _volumeValue.value < 0.5 : _volumeValue.value < 0.5
? Icons.volume_down ? Icons.volume_down
: Icons.volume_up, : Icons.volume_up,
color: const Color(0xFFFFFFFF), color: Colors.white,
size: 20.0, size: 20.0,
), ),
const SizedBox(width: 2.0), const SizedBox(width: 2.0),
@@ -873,7 +873,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
'${(_volumeValue.value * 100.0).round()}%', '${(_volumeValue.value * 100.0).round()}%',
style: const TextStyle( style: const TextStyle(
fontSize: 13.0, fontSize: 13.0,
color: Color(0xFFFFFFFF), color: Colors.white,
), ),
), ),
], ],
@@ -911,7 +911,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
: _brightnessValue.value < 2.0 / 3.0 : _brightnessValue.value < 2.0 / 3.0
? Icons.brightness_medium ? Icons.brightness_medium
: Icons.brightness_high, : Icons.brightness_high,
color: const Color(0xFFFFFFFF), color: Colors.white,
size: 18.0, size: 18.0,
), ),
const SizedBox(width: 2.0), const SizedBox(width: 2.0),
@@ -919,7 +919,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
'${(_brightnessValue.value * 100.0).round()}%', '${(_brightnessValue.value * 100.0).round()}%',
style: const TextStyle( style: const TextStyle(
fontSize: 13.0, fontSize: 13.0,
color: Color(0xFFFFFFFF), color: Colors.white,
), ),
), ),
], ],

View File

@@ -65,14 +65,14 @@ class BackwardSeekIndicatorState extends State<BackwardSeekIndicator> {
const Icon( const Icon(
Icons.fast_rewind, Icons.fast_rewind,
size: 24.0, size: 24.0,
color: Color(0xFFFFFFFF), color: Colors.white,
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'快退${value.inSeconds}', '快退${value.inSeconds}',
style: const TextStyle( style: const TextStyle(
fontSize: 12.0, fontSize: 12.0,
color: Color(0xFFFFFFFF), color: Colors.white,
), ),
), ),
], ],

View File

@@ -65,14 +65,14 @@ class ForwardSeekIndicatorState extends State<ForwardSeekIndicator> {
const Icon( const Icon(
Icons.fast_forward, Icons.fast_forward,
size: 24.0, size: 24.0,
color: Color(0xFFFFFFFF), color: Colors.white,
), ),
const SizedBox(height: 8.0), const SizedBox(height: 8.0),
Text( Text(
'快进${value.inSeconds}', '快进${value.inSeconds}',
style: const TextStyle( style: const TextStyle(
fontSize: 12.0, fontSize: 12.0,
color: Color(0xFFFFFFFF), color: Colors.white,
), ),
), ),
], ],

View File

@@ -54,3 +54,11 @@ extension StringExt on String {
extension boolExt on bool { extension boolExt on bool {
bool get not => !this; bool get not => !this;
} }
extension BuildContextExt on BuildContext {
Color get vipColor {
return Theme.of(this).brightness == Brightness.light
? const Color(0xFFFF6699)
: const Color(0xFFD44E7D);
}
}

View File

@@ -1,7 +1,7 @@
class GlobalData { class GlobalData {
int imgQuality = 10; int imgQuality = 10;
int themeMode = 2; // int themeMode = 2;
bool grpcReply = true; bool grpcReply = true;

View File

@@ -125,21 +125,24 @@ class GStorage {
static MemberTabType get memberTab => MemberTabType static MemberTabType get memberTab => MemberTabType
.values[setting.get(SettingBoxKey.memberTab, defaultValue: 0)]; .values[setting.get(SettingBoxKey.memberTab, defaultValue: 0)];
static int get themeType =>
setting.get(SettingBoxKey.themeMode, defaultValue: ThemeType.system.code);
static ThemeMode get themeMode { static ThemeMode get themeMode {
return switch (GlobalData().themeMode) { return switch (themeType) {
0 => ThemeMode.light, 0 => ThemeMode.light,
1 => ThemeMode.dark, 1 => ThemeMode.dark,
_ => ThemeMode.system _ => ThemeMode.system
}; };
} }
static Brightness get brightness { // static Brightness get brightness {
return switch (GlobalData().themeMode) { // return switch (_themeMode) {
0 => Brightness.light, // 0 => Brightness.light,
1 => Brightness.dark, // 1 => Brightness.dark,
_ => PlatformDispatcher.instance.platformBrightness // _ => PlatformDispatcher.instance.platformBrightness
}; // };
} // }
static Future<void> init() async { static Future<void> init() async {
final Directory dir = await getApplicationSupportDirectory(); final Directory dir = await getApplicationSupportDirectory();
@@ -176,10 +179,10 @@ class GStorage {
SettingBoxKey.defaultPicQa, SettingBoxKey.defaultPicQa,
defaultValue: 10, defaultValue: 10,
); );
GlobalData().themeMode = setting.get( // GlobalData().themeMode = setting.get(
SettingBoxKey.themeMode, // SettingBoxKey.themeMode,
defaultValue: ThemeType.system.code, // defaultValue: ThemeType.system.code,
); // );
GlobalData().grpcReply = grpcReply; GlobalData().grpcReply = grpcReply;
} }

View File

@@ -1,6 +1,3 @@
// 工具函数
// ignore_for_file: non_constant_identifier_names
import 'dart:async'; import 'dart:async';
import 'dart:convert'; import 'dart:convert';
import 'dart:io'; import 'dart:io';
@@ -13,7 +10,6 @@ import 'package:PiliPalaX/models/bangumi/info.dart';
import 'package:PiliPalaX/models/common/search_type.dart'; import 'package:PiliPalaX/models/common/search_type.dart';
import 'package:PiliPalaX/pages/video/detail/introduction/widgets/group_panel.dart'; import 'package:PiliPalaX/pages/video/detail/introduction/widgets/group_panel.dart';
import 'package:PiliPalaX/utils/feed_back.dart'; import 'package:PiliPalaX/utils/feed_back.dart';
import 'package:PiliPalaX/utils/storage.dart';
import 'package:crypto/crypto.dart'; import 'package:crypto/crypto.dart';
import 'package:device_info_plus/device_info_plus.dart'; import 'package:device_info_plus/device_info_plus.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@@ -369,12 +365,6 @@ class Utils {
} }
} }
static Color get vipColor {
return GStorage.brightness == Brightness.light
? const Color(0xFFFF6699)
: const Color(0xFFD44E7D);
}
static Future<String> getCookiePath() async { static Future<String> getCookiePath() async {
final Directory tempDir = await getApplicationSupportDirectory(); final Directory tempDir = await getApplicationSupportDirectory();
final String tempPath = "${tempDir.path}/.plpl/"; final String tempPath = "${tempDir.path}/.plpl/";
@@ -542,17 +532,17 @@ class Utils {
if (formatType == 'detail') { if (formatType == 'detail') {
currentYearStr = 'MM-DD hh:mm'; currentYearStr = 'MM-DD hh:mm';
lastYearStr = 'YY-MM-DD hh:mm'; lastYearStr = 'YY-MM-DD hh:mm';
return CustomStamp_str( return customStampStr(
timestamp: timeStamp, date: lastYearStr, toInt: false); timestamp: timeStamp, date: lastYearStr, toInt: false);
} else if (formatType == 'day') { } else if (formatType == 'day') {
if (distance <= 43200) { if (distance <= 43200) {
return CustomStamp_str( return customStampStr(
timestamp: timeStamp, timestamp: timeStamp,
date: 'hh:mm', date: 'hh:mm',
toInt: true, toInt: true,
); );
} }
return CustomStamp_str( return customStampStr(
timestamp: timeStamp, timestamp: timeStamp,
date: 'YY-MM-DD', date: 'YY-MM-DD',
toInt: true, toInt: true,
@@ -566,16 +556,16 @@ class Utils {
return '${(distance / 60 / 60).floor()}小时前'; return '${(distance / 60 / 60).floor()}小时前';
} else if (DateTime.fromMillisecondsSinceEpoch(time * 1000).year == } else if (DateTime.fromMillisecondsSinceEpoch(time * 1000).year ==
DateTime.fromMillisecondsSinceEpoch(timeStamp * 1000).year) { DateTime.fromMillisecondsSinceEpoch(timeStamp * 1000).year) {
return CustomStamp_str( return customStampStr(
timestamp: timeStamp, date: currentYearStr, toInt: false); timestamp: timeStamp, date: currentYearStr, toInt: false);
} else { } else {
return CustomStamp_str( return customStampStr(
timestamp: timeStamp, date: lastYearStr, toInt: false); timestamp: timeStamp, date: lastYearStr, toInt: false);
} }
} }
// 时间戳转时间 // 时间戳转时间
static String CustomStamp_str({ static String customStampStr({
int? timestamp, // 为空则显示当前时间 int? timestamp, // 为空则显示当前时间
String? date, // 显示格式,比如:'YY年MM月DD日 hh:mm:ss' String? date, // 显示格式,比如:'YY年MM月DD日 hh:mm:ss'
bool toInt = true, // 去除0开头 bool toInt = true, // 去除0开头
@@ -587,8 +577,11 @@ class Utils {
dynamic dateArr = timeStr.split(' ')[0]; dynamic dateArr = timeStr.split(' ')[0];
dynamic timeArr = timeStr.split(' ')[1]; dynamic timeArr = timeStr.split(' ')[1];
// ignore: non_constant_identifier_names
String YY = dateArr.split('-')[0]; String YY = dateArr.split('-')[0];
// ignore: non_constant_identifier_names
String MM = dateArr.split('-')[1]; String MM = dateArr.split('-')[1];
// ignore: non_constant_identifier_names
String DD = dateArr.split('-')[2]; String DD = dateArr.split('-')[2];
String hh = timeArr.split(':')[0]; String hh = timeArr.split(':')[0];