增加全局置灰功能

This commit is contained in:
胡天 2023-07-23 17:47:15 +08:00
parent 998f61dea7
commit a7d4f1d256
5 changed files with 52 additions and 35 deletions

View File

@ -8,10 +8,13 @@ class ConfigService extends GetxService {
static ConfigService get to => Get.find();
bool isFirstOpen = false;
RxBool isGrayFilter = false.obs;
PackageInfo? _platform;
String get version => _platform?.version ?? "-";
bool get isRelease => bool.fromEnvironment("dart.vm.product");
Locale locale = Locale("en", "US");
List<Locale> languages = [
@ -25,6 +28,10 @@ class ConfigService extends GetxService {
isFirstOpen = StorageService.to.getBool(StorageDeviceFirstOpenKey);
}
void changeGrayTheme() {
isGrayFilter.value = !isGrayFilter.value;
}
Future<void> getPlatform() async {
_platform = await PackageInfo.fromPlatform();
}
@ -35,8 +42,8 @@ class ConfigService extends GetxService {
}
void onInitLocale() {
String langCode = StorageService.to.getString(StorageLanguageCode);
if (langCode .isEmpty) return;
String langCode = StorageService.to.getString(StorageLanguageCode);
if (langCode.isEmpty) return;
int index = languages.indexWhere((element) {
return element.languageCode == langCode;
@ -51,4 +58,4 @@ class ConfigService extends GetxService {
Get.updateLocale(value);
StorageService.to.setString(StorageLanguageCode, value.languageCode);
}
}
}

View File

@ -10,6 +10,7 @@ import 'package:news_getx/utils/loading.dart';
class Global {
///
static Future init() async {
//
WidgetsFlutterBinding.ensureInitialized();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:news_getx/data/services/config.dart';
import 'package:news_getx/global.dart';
import 'package:news_getx/routes/app_pages.dart';
import 'package:news_getx/theme/app_theme.dart';
@ -23,6 +24,15 @@ class MyApp extends StatelessWidget {
// true column就不会随着软键盘而变化
// useInheritedMediaQuery: true,
builder: (BuildContext context, Widget? child) {
var app = GetMaterialApp(
title: 'News',
debugShowCheckedModeBanner: false,
theme: AppTheme.light,
initialRoute: AppRoutes.Initial,
getPages: AppPages.pages,
builder: EasyLoading.init(),
);
return RefreshConfiguration(
headerBuilder: () => ClassicHeader(),
footerBuilder: () => ClassicFooter(),
@ -30,14 +40,12 @@ class MyApp extends StatelessWidget {
headerTriggerDistance: 80,
maxOverScrollExtent: 100,
footerTriggerDistance: 150,
child: GetMaterialApp(
title: 'News',
debugShowCheckedModeBanner: false,
theme: AppTheme.light,
initialRoute: AppRoutes.Initial,
getPages: AppPages.pages,
builder: EasyLoading.init(),
),
child: Obx(() {
return ConfigService.to.isGrayFilter.isTrue ? ColorFiltered(
colorFilter: ColorFilter.mode(Colors.white, BlendMode.color),
child: app,
) : app;
}),
);
},
);

View File

@ -23,30 +23,31 @@ class _NewsPageListState extends State<NewsPageList>
Widget build(BuildContext context) {
super.build(context);
return GetX<CategoryController>(
init: controller,
builder: (controller) {
return SmartRefresher(
controller: controller.refreshController,
enablePullUp: true,
onRefresh: controller.onRefresh,
onLoading: controller.onLoading,
child: CustomScrollView(
slivers: [
SliverPadding(
padding: EdgeInsets.symmetric(vertical: 0.w, horizontal: 0.h),
sliver: SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
var item = controller.state.newsList[index];
return NewsListItem(newsItem: item);
},
childCount: controller.state.newsList.length,
),
init: controller,
builder: (controller) {
return SmartRefresher(
controller: controller.refreshController,
enablePullUp: true,
onRefresh: controller.onRefresh,
onLoading: controller.onLoading,
child: CustomScrollView(
slivers: [
SliverPadding(
padding: EdgeInsets.symmetric(vertical: 0.w, horizontal: 0.h),
sliver: SliverList(
delegate: SliverChildBuilderDelegate(
(BuildContext context, int index) {
var item = controller.state.newsList[index];
return NewsListItem(newsItem: item);
},
childCount: controller.state.newsList.length,
),
),
],
),
);
});
),
],
),
);
},
);
}
}

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:news_getx/data/services/config.dart';
import 'package:news_getx/modules/main/main_controller.dart';
import 'package:news_getx/modules/widgets/image.dart';
import 'package:news_getx/theme/app_colors.dart';
@ -9,7 +10,6 @@ import 'package:news_getx/utils/date.dart';
class NewsRecommendWidget extends GetView<MainController> {
@override
Widget build(BuildContext context) {
print('推荐信息:${controller.state.newsRecommend?.thumbnail}');
return Obx(
() => controller.state.newsRecommend == null
? Container()