修复部分问题,优化部分代码

This commit is contained in:
fengshengxiong 2024-05-24 18:35:56 +08:00
parent f632ea9643
commit 7087882d46
25 changed files with 115 additions and 71 deletions

3
.fvmrc Normal file
View File

@ -0,0 +1,3 @@
{
"flutter": "3.19.6"
}

View File

@ -54,7 +54,7 @@ android {
// You can update the following values to match your application needs. // You can update the following values to match your application needs.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
// minSdkVersion flutter.minSdkVersion // minSdkVersion flutter.minSdkVersion
minSdkVersion 19 minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger() versionCode flutterVersionCode.toInteger()
versionName flutterVersionName versionName flutterVersionName

View File

@ -2908,11 +2908,6 @@
"previewThumb": "https://resource-sg-public.lux-ad.com/wallpaper/9f275c8eba3d137304a5f8de5d0a378a.jpg", "previewThumb": "https://resource-sg-public.lux-ad.com/wallpaper/9f275c8eba3d137304a5f8de5d0a378a.jpg",
"source": "https://resource-sg-public.lux-ad.com/wallpaper/45f776f83fa4cbd8ecb0663337a9bc1b.jpg" "source": "https://resource-sg-public.lux-ad.com/wallpaper/45f776f83fa4cbd8ecb0663337a9bc1b.jpg"
}, },
{
"original": "https://resource-sg-public.lux-ad.com/wallpaper/cadf45fd51c10bd72be33dfb368b996c.jpg",
"previewThumb": "https://resource-sg-public.lux-ad.com/wallpaper/590c191d1cd869cef10e1b16a6b8ee85.jpg",
"source": "https://resource-sg-public.lux-ad.com/wallpaper/fd2aedaae00914150d382be1b28e2b20.jpg"
},
{ {
"original": "https://resource-sg-public.lux-ad.com/wallpaper/8305a11b0e15251d5b3739a918240ecc.jpg", "original": "https://resource-sg-public.lux-ad.com/wallpaper/8305a11b0e15251d5b3739a918240ecc.jpg",
"previewThumb": "https://resource-sg-public.lux-ad.com/wallpaper/2a9207fe180aa469148ab08fd8d5b3ea.jpg", "previewThumb": "https://resource-sg-public.lux-ad.com/wallpaper/2a9207fe180aa469148ab08fd8d5b3ea.jpg",

View File

@ -38,9 +38,9 @@ class BaseAppBar extends StatelessWidget implements PreferredSizeWidget {
child: Material( child: Material(
color: Colors.transparent, color: Colors.transparent,
child: InkWell( child: InkWell(
onTap: onBackTap ?? () async { onTap: onBackTap ?? () {
await ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
Get.back(); Get.back();
ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
}, },
child: Padding( child: Padding(
padding: const EdgeInsets.all(10).w, padding: const EdgeInsets.all(10).w,

View File

@ -41,7 +41,7 @@ void main() async {
}; };
// 广sdk // 广sdk
// await ApplovinManage().initApplovin(); await ApplovinManage().initApplovin();
// Hive // Hive
await initHive(); await initHive();

View File

@ -6,8 +6,10 @@ import 'package:hello_wallpaper/generated/assets.dart';
import 'package:hello_wallpaper/modules/about/about_controller.dart'; import 'package:hello_wallpaper/modules/about/about_controller.dart';
import 'package:hello_wallpaper/res/values/strings.dart'; import 'package:hello_wallpaper/res/values/strings.dart';
class AboutView extends GetView<AboutController> { class AboutView extends StatelessWidget {
const AboutView({super.key}); AboutView({super.key});
final controller = Get.find<AboutController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -41,13 +41,17 @@ class CatalogController extends GetxController {
} }
} }
///
void onTapSingleCls(WallpaperModel wallpaperModel) { void onTapSingleCls(WallpaperModel wallpaperModel) {
//
Get.toNamed(AppPages.clsDet, arguments: wallpaperModel); Get.toNamed(AppPages.clsDet, arguments: wallpaperModel);
} }
/// ///
void onTapItem(List<WallpaperData> wallpaperList, int index) { void onTapItem(String clsName, List<WallpaperData> wallpaperList, int index) {
Get.toNamed(AppPages.wallpaperDet, arguments: {'position': index, 'wallpaperList': wallpaperList}); Get.toNamed(AppPages.wallpaperDet, arguments: {
'position': index,
'wallpaperList': wallpaperList,
'heroTag': 'Catalog-$clsName-$index',
});
} }
} }

View File

@ -2,6 +2,7 @@ import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:hello_wallpaper/common/components/image_network_widget.dart'; import 'package:hello_wallpaper/common/components/image_network_widget.dart';
import 'package:hello_wallpaper/common/components/keep_alive_wrapper.dart';
import 'package:hello_wallpaper/models/wallpaper_model.dart'; import 'package:hello_wallpaper/models/wallpaper_model.dart';
import 'package:hello_wallpaper/modules/catalog/catalog_controller.dart'; import 'package:hello_wallpaper/modules/catalog/catalog_controller.dart';
@ -91,7 +92,7 @@ class CatalogView extends GetView<CatalogController> {
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
itemCount: wallpaperList.length, itemCount: wallpaperList.length,
itemBuilder: (context, index) { itemBuilder: (context, index) {
return _buildWallpaperItem(wallpaperList, wallpaperList[index], index); return _buildWallpaperItem('${item.name}', wallpaperList, wallpaperList[index], index);
}, },
separatorBuilder: (context, index) { separatorBuilder: (context, index) {
return SizedBox(width: 8.w); return SizedBox(width: 8.w);
@ -103,11 +104,12 @@ class CatalogView extends GetView<CatalogController> {
); );
} }
Widget _buildWallpaperItem(List<WallpaperData> wallpaperList, WallpaperData item, int index) { Widget _buildWallpaperItem(String clsName, List<WallpaperData> wallpaperList, WallpaperData item, int index) {
return GestureDetector( return GestureDetector(
onTap: () => controller.onTapItem(wallpaperList, index), onTap: () => controller.onTapItem(clsName, wallpaperList, index),
child: Hero( child: Hero(
tag: '$index-${item.original}', tag: 'Catalog-$clsName-$index',
child: KeepAliveWrapper(
child: ImageNetworkWidget( child: ImageNetworkWidget(
url: item.previewThumb, url: item.previewThumb,
width: 136.w, width: 136.w,
@ -115,6 +117,7 @@ class CatalogView extends GetView<CatalogController> {
radius: 8.r, radius: 8.r,
), ),
), ),
),
); );
} }
} }

View File

@ -16,6 +16,10 @@ class ClsDetController extends GetxController {
/// ///
void onTapItem(int index) { void onTapItem(int index) {
Get.toNamed(AppPages.wallpaperDet, arguments: {'position': index, 'wallpaperList': wallpaperDataList}); Get.toNamed(AppPages.wallpaperDet, arguments: {
'position': index,
'wallpaperList': wallpaperDataList,
'heroTag': 'ClsDet-$index',
});
} }
} }

View File

@ -7,8 +7,10 @@ import 'package:hello_wallpaper/common/components/navigation_bar/base_appbar.dar
import 'package:hello_wallpaper/models/wallpaper_model.dart'; import 'package:hello_wallpaper/models/wallpaper_model.dart';
import 'package:hello_wallpaper/modules/cls_det/cls_det_controller.dart'; import 'package:hello_wallpaper/modules/cls_det/cls_det_controller.dart';
class ClsDetView extends GetView<ClsDetController> { class ClsDetView extends StatelessWidget {
const ClsDetView({super.key}); ClsDetView({super.key});
final controller = Get.find<ClsDetController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -30,11 +32,11 @@ class ClsDetView extends GetView<ClsDetController> {
); );
} }
Widget _buildDiscoverItem(WallpaperData item, index) { Widget _buildDiscoverItem(WallpaperData item, int index) {
return GestureDetector( return GestureDetector(
onTap: () => controller.onTapItem(index), onTap: () => controller.onTapItem(index),
child: Hero( child: Hero(
tag: '$index-${item.original}', tag: 'ClsDet-$index',
child: ImageNetworkWidget( child: ImageNetworkWidget(
url: item.previewThumb, url: item.previewThumb,
radius: 8.r, radius: 8.r,

View File

@ -14,8 +14,10 @@ class DiscoverController extends GetxController {
var wallpaperDataList = <WallpaperData>[]; var wallpaperDataList = <WallpaperData>[];
var todayNewestList = <WallpaperData>[]; var todayNewestList = <WallpaperData>[];
WallpaperModel? todayNewestData; WallpaperModel? todayNewestData;
/// ///
var clsName = ''; var clsName = '';
/// ///
int pageNum = 1; int pageNum = 1;
int pageSize = 10; int pageSize = 10;
@ -29,14 +31,18 @@ class DiscoverController extends GetxController {
void getData() { void getData() {
todayNewestData = HomeController.to.getRandomCls(); todayNewestData = HomeController.to.getRandomCls();
if (todayNewestData != null && todayNewestData!.data != null && todayNewestData!.data!.length >= 3) { if (todayNewestData != null &&
todayNewestData!.data != null &&
todayNewestData!.data!.length >= 3) {
clsName = ObjUtil.getStr(todayNewestData!.name); clsName = ObjUtil.getStr(todayNewestData!.name);
var flatList = todayNewestData!.data!.map((e) => e).toList(); var flatList = todayNewestData!.data!.map((e) => e).toList();
// 3 // 3
todayNewestList = (flatList..shuffle()).take(3).toList(); todayNewestList = (flatList..shuffle()).take(3).toList();
} }
viewState = HomeController.to.viewState; viewState = HomeController.to.viewState;
allWallpaper = HomeController.to.wallpaperModelList.expand((element) => element.data ?? <WallpaperData>[]).toList(); allWallpaper = HomeController.to.wallpaperModelList
.expand((element) => element.data ?? <WallpaperData>[])
.toList();
// List顺序 // List顺序
allWallpaper.shuffle(); allWallpaper.shuffle();
_getDataToShow(); _getDataToShow();
@ -66,12 +72,15 @@ class DiscoverController extends GetxController {
/// ///
void onTapTodayNewest() { void onTapTodayNewest() {
//
Get.toNamed(AppPages.clsDet, arguments: todayNewestData); Get.toNamed(AppPages.clsDet, arguments: todayNewestData);
} }
/// ///
void onTapItem(int index) { void onTapItem(int index) {
Get.toNamed(AppPages.wallpaperDet, arguments: {'position': index, 'wallpaperList': wallpaperDataList}); Get.toNamed(AppPages.wallpaperDet, arguments: {
'position': index,
'wallpaperList': wallpaperDataList,
'heroTag': 'Discover-$index',
});
} }
} }

View File

@ -53,11 +53,11 @@ class DiscoverView extends GetView<DiscoverController> {
); );
} }
Widget _buildDiscoverItem(WallpaperData item, index) { Widget _buildDiscoverItem(WallpaperData item, int index) {
return GestureDetector( return GestureDetector(
onTap: () => controller.onTapItem(index), onTap: () => controller.onTapItem(index),
child: Hero( child: Hero(
tag: '$index-${item.original}', tag: 'Discover-$index',
child: ImageNetworkWidget( child: ImageNetworkWidget(
url: item.previewThumb, url: item.previewThumb,
radius: 8.r, radius: 8.r,

View File

@ -54,6 +54,7 @@ class FavoriteController extends GetxController {
Get.toNamed(AppPages.wallpaperDet, arguments: { Get.toNamed(AppPages.wallpaperDet, arguments: {
'position': index, 'position': index,
'wallpaperList': isFavorite ? favoriteList : todayHottestList, 'wallpaperList': isFavorite ? favoriteList : todayHottestList,
'heroTag': '${isFavorite ? 'Favorite' : 'TodayHottest'}-$index',
}); });
} }
@ -89,8 +90,8 @@ class FavoriteController extends GetxController {
); );
} }
///
void onTapViewMore() { void onTapViewMore() {
//
Get.toNamed(AppPages.clsDet, arguments: todayHottestData); Get.toNamed(AppPages.clsDet, arguments: todayHottestData);
} }
} }

View File

@ -56,7 +56,7 @@ class FavoriteView extends GetView<FavoriteController> {
onTap: () => controller.onTapItem(index, true), onTap: () => controller.onTapItem(index, true),
onLongPress: () => controller.onLongPress(index), onLongPress: () => controller.onLongPress(index),
child: Hero( child: Hero(
tag: '$index-${item.original}', tag: 'Favorite-$index',
child: ImageNetworkWidget( child: ImageNetworkWidget(
url: item.previewThumb, url: item.previewThumb,
radius: 8.r, radius: 8.r,
@ -88,7 +88,7 @@ class FavoriteView extends GetView<FavoriteController> {
child: GestureDetector( child: GestureDetector(
onTap: () => controller.onTapItem(e.key, false), onTap: () => controller.onTapItem(e.key, false),
child: Hero( child: Hero(
tag: '${e.key}-${e.value.original}', tag: 'TodayHottest-${e.key}',
child: ImageNetworkWidget( child: ImageNetworkWidget(
url: e.value.previewThumb, url: e.value.previewThumb,
height: 183.h, height: 183.h,

View File

@ -70,9 +70,9 @@ class HomeController extends GetxController with WidgetsBindingObserver {
} }
/// BottomNavigationBar /// BottomNavigationBar
void onTapNavigationBar(int index) async { void onTapNavigationBar(int index) {
pageController.jumpToPage(index); pageController.jumpToPage(index);
await ApplovinManage().showAdIfReady(ApplovinManage().adUnitId1); ApplovinManage().showAdIfReady(ApplovinManage().adUnitId1);
} }
/// ///

View File

@ -5,8 +5,10 @@ import 'package:hello_wallpaper/common/components/keep_alive_wrapper.dart';
import 'package:hello_wallpaper/common/components/navigation_bar/title_bar_widget.dart'; import 'package:hello_wallpaper/common/components/navigation_bar/title_bar_widget.dart';
import 'package:hello_wallpaper/modules/home/home_controller.dart'; import 'package:hello_wallpaper/modules/home/home_controller.dart';
class HomeView extends GetView<HomeController> { class HomeView extends StatelessWidget {
const HomeView({super.key}); HomeView({super.key});
final controller = Get.find<HomeController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -23,13 +23,13 @@ class SettingsController extends GetxController {
); );
} }
if (index == 2) { if (index == 2) {
Get.toNamed(AppPages.webPage, arguments: { Get.toNamed(AppPages.privacyPolicy, arguments: {
'title': options[index], 'title': options[index],
'url': 'https://nowwallpaperapp.mystrikingly.com/privacy', 'url': 'https://nowwallpaperapp.mystrikingly.com/privacy',
}); });
} }
if (index == 3) { if (index == 3) {
Get.toNamed(AppPages.webPage, arguments: { Get.toNamed(AppPages.termsOfService, arguments: {
'title': options[index], 'title': options[index],
'url': 'https://nowwallpaperapp.mystrikingly.com/terms' 'url': 'https://nowwallpaperapp.mystrikingly.com/terms'
}); });

View File

@ -5,8 +5,10 @@ import 'package:hello_wallpaper/common/components/navigation_bar/base_appbar.dar
import 'package:hello_wallpaper/generated/assets.dart'; import 'package:hello_wallpaper/generated/assets.dart';
import 'package:hello_wallpaper/modules/settings/settings_controller.dart'; import 'package:hello_wallpaper/modules/settings/settings_controller.dart';
class SettingsView extends GetView<SettingsController> { class SettingsView extends StatelessWidget{
const SettingsView({super.key}); SettingsView({super.key});
final controller = Get.find<SettingsController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -6,7 +6,7 @@ import 'package:hello_wallpaper/routes/app_pages.dart';
class SplashScreenController extends GetxController { class SplashScreenController extends GetxController {
Timer? _timer; Timer? _timer;
int _timeCount = 1; int _timeCount = 15;
@override @override
void onInit() { void onInit() {

View File

@ -5,8 +5,10 @@ import 'package:hello_wallpaper/generated/assets.dart';
import 'package:hello_wallpaper/modules/splash_screen/splash_screen_controller.dart'; import 'package:hello_wallpaper/modules/splash_screen/splash_screen_controller.dart';
import 'package:hello_wallpaper/res/values/strings.dart'; import 'package:hello_wallpaper/res/values/strings.dart';
class SplashScreenView extends GetView<SplashScreenController> { class SplashScreenView extends StatelessWidget {
const SplashScreenView({super.key}); SplashScreenView({super.key});
final controller = Get.find<SplashScreenController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -23,6 +23,7 @@ class WallpaperDetController extends GetxController {
late final List<GlobalKey> globalKey; late final List<GlobalKey> globalKey;
late final List<WallpaperData> wallpaperList; late final List<WallpaperData> wallpaperList;
late final PageController pageController; late final PageController pageController;
late final String heroTag;
var blurs = <bool>[].obs; var blurs = <bool>[].obs;
var position = 0; var position = 0;
var filePath = ''; var filePath = '';
@ -30,8 +31,10 @@ class WallpaperDetController extends GetxController {
@override @override
void onInit() { void onInit() {
super.onInit(); super.onInit();
position = Get.arguments['position'] ?? 0; Map<String, dynamic> arguments = Get.arguments ?? {};
wallpaperList = Get.arguments['wallpaperList'] ?? <WallpaperData>[]; position = arguments['position'] ?? 0;
wallpaperList = arguments['wallpaperList'] ?? <WallpaperData>[];
heroTag = arguments['heroTag'] ?? '';
globalKey = List.generate(wallpaperList.length, (index) => GlobalKey()); globalKey = List.generate(wallpaperList.length, (index) => GlobalKey());
blurs.value = List.generate(wallpaperList.length, (index) => false); blurs.value = List.generate(wallpaperList.length, (index) => false);
pageController = PageController(initialPage: position); pageController = PageController(initialPage: position);
@ -162,8 +165,8 @@ class WallpaperDetController extends GetxController {
} }
/// 广 /// 广
Future<void> showAd() async { void showAd() {
await ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
Get.back(); Get.back();
ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
} }
} }

View File

@ -13,8 +13,10 @@ import 'package:hello_wallpaper/modules/wallpaper_det/wallpaper_det_controller.d
import 'package:photo_view/photo_view.dart'; import 'package:photo_view/photo_view.dart';
import 'package:photo_view/photo_view_gallery.dart'; import 'package:photo_view/photo_view_gallery.dart';
class WallpaperDetView extends GetView<WallpaperDetController> { class WallpaperDetView extends StatelessWidget {
const WallpaperDetView({super.key}); WallpaperDetView({super.key});
final controller = Get.find<WallpaperDetController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -85,7 +87,7 @@ class WallpaperDetView extends GetView<WallpaperDetController> {
maxScale: PhotoViewComputedScale.covered * 3, maxScale: PhotoViewComputedScale.covered * 3,
loadingBuilder: (context, event) => loadingView(), loadingBuilder: (context, event) => loadingView(),
errorBuilder: (BuildContext context, Object error, StackTrace? stackTrace) => errorView, errorBuilder: (BuildContext context, Object error, StackTrace? stackTrace) => errorView,
heroAttributes: PhotoViewHeroAttributes(tag: '${controller.position}-${controller.wallpaperList[index].original}'), heroAttributes: PhotoViewHeroAttributes(tag: controller.heroTag),
), ),
); );
}), }),

View File

@ -5,8 +5,10 @@ import 'package:hello_wallpaper/common/components/view_state_widget.dart';
import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter/webview_flutter.dart';
import 'web_page_controller.dart'; import 'web_page_controller.dart';
class WebPageView extends GetView<WebPageController> { class WebPageView extends StatelessWidget {
const WebPageView({super.key}); WebPageView({super.key});
final controller = Get.find<WebPageController>();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {

View File

@ -39,44 +39,52 @@ class AppPages {
/// ///
static const about = '/about'; static const about = '/about';
/// WebView页面 ///
static const webPage = '/web_page'; static const privacyPolicy = '/privacy_policy';
///
static const termsOfService = '/terms_of_service';
static final routes = [ static final routes = [
GetPage( GetPage(
name: splashScreen, name: splashScreen,
page: () => const SplashScreenView(), page: () => SplashScreenView(),
binding: SplashScreenBinding(), binding: SplashScreenBinding(),
), ),
GetPage( GetPage(
name: home, name: home,
page: () => const HomeView(), page: () => HomeView(),
binding: HomeBinding(), binding: HomeBinding(),
), ),
GetPage( GetPage(
name: wallpaperDet, name: wallpaperDet,
page: () => const WallpaperDetView(), page: () => WallpaperDetView(),
binding: WallpaperDetBinding(), binding: WallpaperDetBinding(),
), ),
GetPage( GetPage(
name: clsDet, name: clsDet,
page: () => const ClsDetView(), page: () => ClsDetView(),
binding: ClsDetBinding(), binding: ClsDetBinding(),
), ),
GetPage( GetPage(
name: settings, name: settings,
page: () => const SettingsView(), page: () => SettingsView(),
binding: SettingsBinding(), binding: SettingsBinding(),
), ),
GetPage( GetPage(
name: webPage, name: about,
page: () => const WebPageView(), page: () => AboutView(),
binding: AboutBinding(),
),
GetPage(
name: privacyPolicy,
page: () => WebPageView(),
binding: WebPageBinding(), binding: WebPageBinding(),
), ),
GetPage( GetPage(
name: about, name: termsOfService,
page: () => const AboutView(), page: () => WebPageView(),
binding: AboutBinding(), binding: WebPageBinding(),
), ),
]; ];
} }

View File

@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts # In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix. # of the product and file versions while build-number is used as the build suffix.
version: 1.0.0+1 version: 1.0.1+2
environment: environment:
sdk: '>=3.3.4 <4.0.0' sdk: '>=3.3.4 <4.0.0'