mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-06-01 00:28:18 +08:00
opt: def searchword
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -3,7 +3,6 @@ import 'dart:math';
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:hive/hive.dart';
|
|
||||||
import 'package:PiliPalaX/models/common/tab_type.dart';
|
import 'package:PiliPalaX/models/common/tab_type.dart';
|
||||||
import 'package:PiliPalaX/utils/storage.dart';
|
import 'package:PiliPalaX/utils/storage.dart';
|
||||||
import '../../http/index.dart';
|
import '../../http/index.dart';
|
||||||
@@ -16,32 +15,36 @@ class HomeController extends GetxController with GetTickerProviderStateMixin {
|
|||||||
late TabController tabController;
|
late TabController tabController;
|
||||||
late List tabsCtrList;
|
late List tabsCtrList;
|
||||||
late List<Widget> tabsPageList;
|
late List<Widget> tabsPageList;
|
||||||
Box userInfoCache = GStorage.userInfo;
|
|
||||||
Box settingStorage = GStorage.setting;
|
|
||||||
RxBool userLogin = false.obs;
|
RxBool userLogin = false.obs;
|
||||||
RxString userFace = ''.obs;
|
RxString userFace = ''.obs;
|
||||||
dynamic userInfo;
|
dynamic userInfo;
|
||||||
Box setting = GStorage.setting;
|
|
||||||
late final StreamController<bool> searchBarStream =
|
late final StreamController<bool> searchBarStream =
|
||||||
StreamController<bool>.broadcast();
|
StreamController<bool>.broadcast();
|
||||||
late bool hideSearchBar;
|
late bool hideSearchBar;
|
||||||
late List defaultTabs;
|
late List defaultTabs;
|
||||||
late List<String> tabbarSort;
|
late List<String> tabbarSort;
|
||||||
RxString defaultSearch = ''.obs;
|
|
||||||
late bool useSideBar;
|
late bool useSideBar;
|
||||||
|
|
||||||
|
late bool enableSearchWord;
|
||||||
|
late RxString defaultSearch = ''.obs;
|
||||||
|
late int lateCheckAt = 0;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void onInit() {
|
void onInit() {
|
||||||
super.onInit();
|
super.onInit();
|
||||||
userInfo = userInfoCache.get('userInfoCache');
|
userInfo = GStorage.userInfo.get('userInfoCache');
|
||||||
userLogin.value = userInfo != null;
|
userLogin.value = userInfo != null;
|
||||||
userFace.value = userInfo != null ? userInfo.face : '';
|
userFace.value = userInfo != null ? userInfo.face : '';
|
||||||
hideSearchBar =
|
hideSearchBar =
|
||||||
setting.get(SettingBoxKey.hideSearchBar, defaultValue: true);
|
GStorage.setting.get(SettingBoxKey.hideSearchBar, defaultValue: true);
|
||||||
if (setting.get(SettingBoxKey.enableSearchWord, defaultValue: true)) {
|
enableSearchWord = GStorage.setting
|
||||||
searchDefault();
|
.get(SettingBoxKey.enableSearchWord, defaultValue: true);
|
||||||
|
if (enableSearchWord) {
|
||||||
|
lateCheckAt = DateTime.now().millisecondsSinceEpoch;
|
||||||
|
querySearchDefault();
|
||||||
}
|
}
|
||||||
useSideBar = setting.get(SettingBoxKey.useSideBar, defaultValue: false);
|
useSideBar =
|
||||||
|
GStorage.setting.get(SettingBoxKey.useSideBar, defaultValue: false);
|
||||||
// 进行tabs配置
|
// 进行tabs配置
|
||||||
setTabConfig();
|
setTabConfig();
|
||||||
}
|
}
|
||||||
@@ -60,7 +63,7 @@ class HomeController extends GetxController with GetTickerProviderStateMixin {
|
|||||||
|
|
||||||
// 更新登录状态
|
// 更新登录状态
|
||||||
Future updateLoginStatus(val) async {
|
Future updateLoginStatus(val) async {
|
||||||
userInfo = await userInfoCache.get('userInfoCache');
|
userInfo = await GStorage.userInfo.get('userInfoCache');
|
||||||
userLogin.value = val ?? false;
|
userLogin.value = val ?? false;
|
||||||
if (val) return;
|
if (val) return;
|
||||||
userFace.value = userInfo != null ? userInfo.face : '';
|
userFace.value = userInfo != null ? userInfo.face : '';
|
||||||
@@ -68,7 +71,7 @@ class HomeController extends GetxController with GetTickerProviderStateMixin {
|
|||||||
|
|
||||||
void setTabConfig() async {
|
void setTabConfig() async {
|
||||||
defaultTabs = [...tabsConfig];
|
defaultTabs = [...tabsConfig];
|
||||||
tabbarSort = settingStorage
|
tabbarSort = GStorage.setting
|
||||||
.get(SettingBoxKey.tabbarSort,
|
.get(SettingBoxKey.tabbarSort,
|
||||||
defaultValue: ['live', 'rcmd', 'hot', 'rank', 'bangumi'])
|
defaultValue: ['live', 'rcmd', 'hot', 'rank', 'bangumi'])
|
||||||
.map<String>((i) => i.toString())
|
.map<String>((i) => i.toString())
|
||||||
@@ -93,12 +96,12 @@ class HomeController extends GetxController with GetTickerProviderStateMixin {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
tabController.animation!.removeListener(() {});
|
tabController.animation?.removeListener(() {});
|
||||||
tabController.dispose();
|
tabController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
void searchDefault() async {
|
void querySearchDefault() async {
|
||||||
var res = await Request().get(Api.searchDefault);
|
var res = await Request().get(Api.searchDefault);
|
||||||
if (res.data['code'] == 0) {
|
if (res.data['code'] == 0) {
|
||||||
defaultSearch.value = res.data['data']['name'];
|
defaultSearch.value = res.data['data']['name'];
|
||||||
@@ -108,10 +111,11 @@ class HomeController extends GetxController with GetTickerProviderStateMixin {
|
|||||||
showUserInfoDialog(context) {
|
showUserInfoDialog(context) {
|
||||||
feedBack();
|
feedBack();
|
||||||
showDialog(
|
showDialog(
|
||||||
context: context,
|
context: context,
|
||||||
useSafeArea: true,
|
useSafeArea: true,
|
||||||
builder: (context) => const Dialog(
|
builder: (context) => const Dialog(
|
||||||
child: MinePage(),
|
child: MinePage(),
|
||||||
));
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ import 'dart:async';
|
|||||||
|
|
||||||
import 'package:PiliPalaX/utils/extension.dart';
|
import 'package:PiliPalaX/utils/extension.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
|
import 'package:PiliPalaX/common/widgets/network_img_layer.dart';
|
||||||
import 'package:PiliPalaX/utils/feed_back.dart';
|
import 'package:PiliPalaX/utils/feed_back.dart';
|
||||||
@@ -18,7 +17,6 @@ class HomePage extends StatefulWidget {
|
|||||||
class _HomePageState extends State<HomePage>
|
class _HomePageState extends State<HomePage>
|
||||||
with AutomaticKeepAliveClientMixin, TickerProviderStateMixin {
|
with AutomaticKeepAliveClientMixin, TickerProviderStateMixin {
|
||||||
final HomeController _homeController = Get.put(HomeController());
|
final HomeController _homeController = Get.put(HomeController());
|
||||||
List videoList = [];
|
|
||||||
late Stream<bool> stream;
|
late Stream<bool> stream;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -33,13 +31,6 @@ class _HomePageState extends State<HomePage>
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
super.build(context);
|
super.build(context);
|
||||||
// Brightness currentBrightness = MediaQuery.of(context).platformBrightness;
|
|
||||||
// 设置状态栏图标的亮度
|
|
||||||
// SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
|
|
||||||
// statusBarIconBrightness: currentBrightness == Brightness.light
|
|
||||||
// ? Brightness.dark
|
|
||||||
// : Brightness.light,
|
|
||||||
// ));
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(toolbarHeight: 0),
|
appBar: AppBar(toolbarHeight: 0),
|
||||||
body: Column(
|
body: Column(
|
||||||
@@ -49,7 +40,7 @@ class _HomePageState extends State<HomePage>
|
|||||||
stream: _homeController.hideSearchBar
|
stream: _homeController.hideSearchBar
|
||||||
? stream
|
? stream
|
||||||
: StreamController<bool>.broadcast().stream,
|
: StreamController<bool>.broadcast().stream,
|
||||||
ctr: _homeController,
|
homeController: _homeController,
|
||||||
),
|
),
|
||||||
if (_homeController.tabs.length > 1) ...[
|
if (_homeController.tabs.length > 1) ...[
|
||||||
...[
|
...[
|
||||||
@@ -97,13 +88,13 @@ class _HomePageState extends State<HomePage>
|
|||||||
class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
||||||
final double height;
|
final double height;
|
||||||
final Stream<bool>? stream;
|
final Stream<bool>? stream;
|
||||||
final HomeController ctr;
|
final HomeController homeController;
|
||||||
|
|
||||||
const CustomAppBar({
|
const CustomAppBar({
|
||||||
super.key,
|
super.key,
|
||||||
this.height = kToolbarHeight,
|
this.height = kToolbarHeight,
|
||||||
this.stream,
|
this.stream,
|
||||||
required this.ctr,
|
required this.homeController,
|
||||||
});
|
});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -124,7 +115,7 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
height: snapshot.data ? 52 : 0,
|
height: snapshot.data ? 52 : 0,
|
||||||
padding: const EdgeInsets.fromLTRB(14, 6, 14, 0),
|
padding: const EdgeInsets.fromLTRB(14, 6, 14, 0),
|
||||||
child: SearchBarAndUser(
|
child: SearchBarAndUser(
|
||||||
ctr: ctr,
|
homeController: homeController,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -136,18 +127,18 @@ class CustomAppBar extends StatelessWidget implements PreferredSizeWidget {
|
|||||||
class SearchBarAndUser extends StatelessWidget {
|
class SearchBarAndUser extends StatelessWidget {
|
||||||
const SearchBarAndUser({
|
const SearchBarAndUser({
|
||||||
super.key,
|
super.key,
|
||||||
required this.ctr,
|
required this.homeController,
|
||||||
});
|
});
|
||||||
|
|
||||||
final HomeController ctr;
|
final HomeController homeController;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Row(
|
return Row(
|
||||||
children: [
|
children: [
|
||||||
SearchBar(ctr: ctr),
|
SearchBar(homeController: homeController),
|
||||||
const SizedBox(width: 4),
|
const SizedBox(width: 4),
|
||||||
Obx(() => ctr.userLogin.value
|
Obx(() => homeController.userLogin.value
|
||||||
? ClipRect(
|
? ClipRect(
|
||||||
child: IconButton(
|
child: IconButton(
|
||||||
tooltip: '消息',
|
tooltip: '消息',
|
||||||
@@ -160,37 +151,40 @@ class SearchBarAndUser extends StatelessWidget {
|
|||||||
: const SizedBox.shrink()),
|
: const SizedBox.shrink()),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Semantics(
|
Semantics(
|
||||||
label: "我的",
|
label: "我的",
|
||||||
child: Obx(
|
child: Obx(
|
||||||
() => ctr.userLogin.value
|
() => homeController.userLogin.value
|
||||||
? Stack(
|
? Stack(
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
type: 'avatar',
|
type: 'avatar',
|
||||||
width: 34,
|
width: 34,
|
||||||
height: 34,
|
height: 34,
|
||||||
src: ctr.userFace.value,
|
src: homeController.userFace.value,
|
||||||
),
|
),
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
child: Material(
|
child: Material(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () => ctr.showUserInfoDialog(context),
|
onTap: () =>
|
||||||
splashColor: Theme.of(context)
|
homeController.showUserInfoDialog(context),
|
||||||
.colorScheme
|
splashColor: Theme.of(context)
|
||||||
.primaryContainer
|
.colorScheme
|
||||||
.withOpacity(0.3),
|
.primaryContainer
|
||||||
borderRadius: const BorderRadius.all(
|
.withOpacity(0.3),
|
||||||
Radius.circular(50),
|
borderRadius: const BorderRadius.all(
|
||||||
),
|
Radius.circular(50),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
],
|
)
|
||||||
)
|
],
|
||||||
: DefaultUser(
|
)
|
||||||
callback: () => ctr.showUserInfoDialog(context)),
|
: DefaultUser(
|
||||||
)),
|
onPressed: () => homeController.showUserInfoDialog(context),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -209,45 +203,43 @@ class UserAndSearchVertical extends StatelessWidget {
|
|||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
Semantics(
|
Semantics(
|
||||||
label: "我的",
|
label: "我的",
|
||||||
child: Obx(
|
child: Obx(
|
||||||
() => ctr.userLogin.value
|
() => ctr.userLogin.value
|
||||||
? Stack(
|
? Stack(
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
type: 'avatar',
|
type: 'avatar',
|
||||||
width: 34,
|
width: 34,
|
||||||
height: 34,
|
height: 34,
|
||||||
src: ctr.userFace.value,
|
src: ctr.userFace.value,
|
||||||
),
|
),
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
child: Material(
|
child: Material(
|
||||||
color: Colors.transparent,
|
color: Colors.transparent,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
onTap: () => ctr.showUserInfoDialog(context),
|
onTap: () => ctr.showUserInfoDialog(context),
|
||||||
splashColor: Theme.of(context)
|
splashColor: Theme.of(context)
|
||||||
.colorScheme
|
.colorScheme
|
||||||
.primaryContainer
|
.primaryContainer
|
||||||
.withOpacity(0.3),
|
.withOpacity(0.3),
|
||||||
borderRadius: const BorderRadius.all(
|
borderRadius: const BorderRadius.all(
|
||||||
Radius.circular(50),
|
Radius.circular(50),
|
||||||
),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
)
|
),
|
||||||
],
|
)
|
||||||
)
|
],
|
||||||
: DefaultUser(
|
)
|
||||||
callback: () => ctr.showUserInfoDialog(context)),
|
: DefaultUser(onPressed: () => ctr.showUserInfoDialog(context)),
|
||||||
)),
|
),
|
||||||
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Obx(() => ctr.userLogin.value
|
Obx(() => ctr.userLogin.value
|
||||||
? IconButton(
|
? IconButton(
|
||||||
tooltip: '消息',
|
tooltip: '消息',
|
||||||
onPressed: () => Get.toNamed('/whisper'),
|
onPressed: () => Get.toNamed('/whisper'),
|
||||||
icon: const Icon(
|
icon: const Icon(Icons.notifications_none),
|
||||||
Icons.notifications_none,
|
|
||||||
),
|
|
||||||
)
|
)
|
||||||
: const SizedBox.shrink()),
|
: const SizedBox.shrink()),
|
||||||
IconButton(
|
IconButton(
|
||||||
@@ -263,8 +255,8 @@ class UserAndSearchVertical extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class DefaultUser extends StatelessWidget {
|
class DefaultUser extends StatelessWidget {
|
||||||
const DefaultUser({super.key, this.callback});
|
const DefaultUser({super.key, required this.onPressed});
|
||||||
final Function? callback;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -279,7 +271,7 @@ class DefaultUser extends StatelessWidget {
|
|||||||
return Theme.of(context).colorScheme.onInverseSurface;
|
return Theme.of(context).colorScheme.onInverseSurface;
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
onPressed: () => callback?.call(),
|
onPressed: onPressed,
|
||||||
icon: Icon(
|
icon: Icon(
|
||||||
Icons.person_rounded,
|
Icons.person_rounded,
|
||||||
size: 22,
|
size: 22,
|
||||||
@@ -339,7 +331,7 @@ class DefaultUser extends StatelessWidget {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
class CustomChip extends StatelessWidget {
|
class CustomChip extends StatelessWidget {
|
||||||
final Function onTap;
|
final VoidCallback onTap;
|
||||||
final String label;
|
final String label;
|
||||||
final bool selected;
|
final bool selected;
|
||||||
const CustomChip({
|
const CustomChip({
|
||||||
@@ -372,7 +364,7 @@ class CustomChip extends StatelessWidget {
|
|||||||
}),
|
}),
|
||||||
padding: const EdgeInsets.fromLTRB(6, 1, 6, 1),
|
padding: const EdgeInsets.fromLTRB(6, 1, 6, 1),
|
||||||
label: Text(label, style: chipTextStyle),
|
label: Text(label, style: chipTextStyle),
|
||||||
onPressed: () => onTap(),
|
onPressed: onTap,
|
||||||
selected: selected,
|
selected: selected,
|
||||||
showCheckmark: false,
|
showCheckmark: false,
|
||||||
visualDensity: visualDensity,
|
visualDensity: visualDensity,
|
||||||
@@ -383,10 +375,10 @@ class CustomChip extends StatelessWidget {
|
|||||||
class SearchBar extends StatelessWidget {
|
class SearchBar extends StatelessWidget {
|
||||||
const SearchBar({
|
const SearchBar({
|
||||||
super.key,
|
super.key,
|
||||||
required this.ctr,
|
required this.homeController,
|
||||||
});
|
});
|
||||||
|
|
||||||
final HomeController? ctr;
|
final HomeController homeController;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@@ -405,7 +397,10 @@ class SearchBar extends StatelessWidget {
|
|||||||
splashColor: colorScheme.primaryContainer.withOpacity(0.3),
|
splashColor: colorScheme.primaryContainer.withOpacity(0.3),
|
||||||
onTap: () => Get.toNamed(
|
onTap: () => Get.toNamed(
|
||||||
'/search',
|
'/search',
|
||||||
parameters: {'hintText': ctr!.defaultSearch.value},
|
parameters: {
|
||||||
|
if (homeController.enableSearchWord)
|
||||||
|
'hintText': homeController.defaultSearch.value,
|
||||||
|
},
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
children: [
|
children: [
|
||||||
@@ -416,16 +411,19 @@ class SearchBar extends StatelessWidget {
|
|||||||
semanticLabel: '搜索',
|
semanticLabel: '搜索',
|
||||||
),
|
),
|
||||||
const SizedBox(width: 10),
|
const SizedBox(width: 10),
|
||||||
Expanded(
|
if (homeController.enableSearchWord) ...[
|
||||||
child: Obx(
|
Expanded(
|
||||||
() => Text(
|
child: Obx(
|
||||||
ctr!.defaultSearch.value,
|
() => Text(
|
||||||
maxLines: 1,
|
homeController.defaultSearch.value,
|
||||||
overflow: TextOverflow.ellipsis,
|
maxLines: 1,
|
||||||
style: TextStyle(color: colorScheme.outline),
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(color: colorScheme.outline),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
const SizedBox(width: 2),
|
||||||
|
],
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ class _MainAppState extends State<MainApp>
|
|||||||
@override
|
@override
|
||||||
void didPopNext() {
|
void didPopNext() {
|
||||||
_mainController.checkUnreadDynamic();
|
_mainController.checkUnreadDynamic();
|
||||||
|
_checkDefaultSearch(true);
|
||||||
super.didPopNext();
|
super.didPopNext();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -62,6 +63,22 @@ class _MainAppState extends State<MainApp>
|
|||||||
void didChangeAppLifecycleState(AppLifecycleState state) {
|
void didChangeAppLifecycleState(AppLifecycleState state) {
|
||||||
if (state == AppLifecycleState.resumed) {
|
if (state == AppLifecycleState.resumed) {
|
||||||
_mainController.checkUnreadDynamic();
|
_mainController.checkUnreadDynamic();
|
||||||
|
_checkDefaultSearch(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void _checkDefaultSearch([bool shouldCheck = false]) {
|
||||||
|
if (shouldCheck &&
|
||||||
|
_mainController.pages[_mainController.pageController.page?.round() ?? 0]
|
||||||
|
is! HomePage) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_homeController.enableSearchWord) {
|
||||||
|
int now = DateTime.now().millisecondsSinceEpoch;
|
||||||
|
if (now - _homeController.lateCheckAt >= 5 * 60 * 1000) {
|
||||||
|
_homeController.lateCheckAt = now;
|
||||||
|
_homeController.querySearchDefault();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,6 +97,7 @@ class _MainAppState extends State<MainApp>
|
|||||||
_lastSelectTime = DateTime.now().millisecondsSinceEpoch;
|
_lastSelectTime = DateTime.now().millisecondsSinceEpoch;
|
||||||
}
|
}
|
||||||
_homeController.flag = true;
|
_homeController.flag = true;
|
||||||
|
_checkDefaultSearch();
|
||||||
} else {
|
} else {
|
||||||
_homeController.flag = false;
|
_homeController.flag = false;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user