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

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.
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
// minSdkVersion flutter.minSdkVersion
minSdkVersion 19
minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName

View File

@ -2908,11 +2908,6 @@
"previewThumb": "https://resource-sg-public.lux-ad.com/wallpaper/9f275c8eba3d137304a5f8de5d0a378a.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",
"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(
color: Colors.transparent,
child: InkWell(
onTap: onBackTap ?? () async {
await ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
onTap: onBackTap ?? () {
Get.back();
ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
},
child: Padding(
padding: const EdgeInsets.all(10).w,

View File

@ -41,7 +41,7 @@ void main() async {
};
// 广sdk
// await ApplovinManage().initApplovin();
await ApplovinManage().initApplovin();
// Hive
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/res/values/strings.dart';
class AboutView extends GetView<AboutController> {
const AboutView({super.key});
class AboutView extends StatelessWidget {
AboutView({super.key});
final controller = Get.find<AboutController>();
@override
Widget build(BuildContext context) {

View File

@ -41,13 +41,17 @@ class CatalogController extends GetxController {
}
}
///
void onTapSingleCls(WallpaperModel wallpaperModel) {
//
Get.toNamed(AppPages.clsDet, arguments: wallpaperModel);
}
///
void onTapItem(List<WallpaperData> wallpaperList, int index) {
Get.toNamed(AppPages.wallpaperDet, arguments: {'position': index, 'wallpaperList': wallpaperList});
void onTapItem(String clsName, List<WallpaperData> wallpaperList, int index) {
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:get/get.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/modules/catalog/catalog_controller.dart';
@ -91,7 +92,7 @@ class CatalogView extends GetView<CatalogController> {
scrollDirection: Axis.horizontal,
itemCount: wallpaperList.length,
itemBuilder: (context, index) {
return _buildWallpaperItem(wallpaperList, wallpaperList[index], index);
return _buildWallpaperItem('${item.name}', wallpaperList, wallpaperList[index], index);
},
separatorBuilder: (context, index) {
return SizedBox(width: 8.w);
@ -103,16 +104,18 @@ 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(
onTap: () => controller.onTapItem(wallpaperList, index),
onTap: () => controller.onTapItem(clsName, wallpaperList, index),
child: Hero(
tag: '$index-${item.original}',
child: ImageNetworkWidget(
url: item.previewThumb,
width: 136.w,
height: double.infinity,
radius: 8.r,
tag: 'Catalog-$clsName-$index',
child: KeepAliveWrapper(
child: ImageNetworkWidget(
url: item.previewThumb,
width: 136.w,
height: double.infinity,
radius: 8.r,
),
),
),
);

View File

@ -16,6 +16,10 @@ class ClsDetController extends GetxController {
///
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/modules/cls_det/cls_det_controller.dart';
class ClsDetView extends GetView<ClsDetController> {
const ClsDetView({super.key});
class ClsDetView extends StatelessWidget {
ClsDetView({super.key});
final controller = Get.find<ClsDetController>();
@override
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(
onTap: () => controller.onTapItem(index),
child: Hero(
tag: '$index-${item.original}',
tag: 'ClsDet-$index',
child: ImageNetworkWidget(
url: item.previewThumb,
radius: 8.r,

View File

@ -14,8 +14,10 @@ class DiscoverController extends GetxController {
var wallpaperDataList = <WallpaperData>[];
var todayNewestList = <WallpaperData>[];
WallpaperModel? todayNewestData;
///
var clsName = '';
///
int pageNum = 1;
int pageSize = 10;
@ -29,14 +31,18 @@ class DiscoverController extends GetxController {
void getData() {
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);
var flatList = todayNewestData!.data!.map((e) => e).toList();
// 3
todayNewestList = (flatList..shuffle()).take(3).toList();
}
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顺序
allWallpaper.shuffle();
_getDataToShow();
@ -66,12 +72,15 @@ class DiscoverController extends GetxController {
///
void onTapTodayNewest() {
//
Get.toNamed(AppPages.clsDet, arguments: todayNewestData);
}
///
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(
onTap: () => controller.onTapItem(index),
child: Hero(
tag: '$index-${item.original}',
tag: 'Discover-$index',
child: ImageNetworkWidget(
url: item.previewThumb,
radius: 8.r,

View File

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

View File

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

View File

@ -70,9 +70,9 @@ class HomeController extends GetxController with WidgetsBindingObserver {
}
/// BottomNavigationBar
void onTapNavigationBar(int index) async {
void onTapNavigationBar(int 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/modules/home/home_controller.dart';
class HomeView extends GetView<HomeController> {
const HomeView({super.key});
class HomeView extends StatelessWidget {
HomeView({super.key});
final controller = Get.find<HomeController>();
@override
Widget build(BuildContext context) {

View File

@ -23,13 +23,13 @@ class SettingsController extends GetxController {
);
}
if (index == 2) {
Get.toNamed(AppPages.webPage, arguments: {
Get.toNamed(AppPages.privacyPolicy, arguments: {
'title': options[index],
'url': 'https://nowwallpaperapp.mystrikingly.com/privacy',
});
}
if (index == 3) {
Get.toNamed(AppPages.webPage, arguments: {
Get.toNamed(AppPages.termsOfService, arguments: {
'title': options[index],
'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/modules/settings/settings_controller.dart';
class SettingsView extends GetView<SettingsController> {
const SettingsView({super.key});
class SettingsView extends StatelessWidget{
SettingsView({super.key});
final controller = Get.find<SettingsController>();
@override
Widget build(BuildContext context) {

View File

@ -6,7 +6,7 @@ import 'package:hello_wallpaper/routes/app_pages.dart';
class SplashScreenController extends GetxController {
Timer? _timer;
int _timeCount = 1;
int _timeCount = 15;
@override
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/res/values/strings.dart';
class SplashScreenView extends GetView<SplashScreenController> {
const SplashScreenView({super.key});
class SplashScreenView extends StatelessWidget {
SplashScreenView({super.key});
final controller = Get.find<SplashScreenController>();
@override
Widget build(BuildContext context) {

View File

@ -23,6 +23,7 @@ class WallpaperDetController extends GetxController {
late final List<GlobalKey> globalKey;
late final List<WallpaperData> wallpaperList;
late final PageController pageController;
late final String heroTag;
var blurs = <bool>[].obs;
var position = 0;
var filePath = '';
@ -30,8 +31,10 @@ class WallpaperDetController extends GetxController {
@override
void onInit() {
super.onInit();
position = Get.arguments['position'] ?? 0;
wallpaperList = Get.arguments['wallpaperList'] ?? <WallpaperData>[];
Map<String, dynamic> arguments = Get.arguments ?? {};
position = arguments['position'] ?? 0;
wallpaperList = arguments['wallpaperList'] ?? <WallpaperData>[];
heroTag = arguments['heroTag'] ?? '';
globalKey = List.generate(wallpaperList.length, (index) => GlobalKey());
blurs.value = List.generate(wallpaperList.length, (index) => false);
pageController = PageController(initialPage: position);
@ -162,8 +165,8 @@ class WallpaperDetController extends GetxController {
}
/// 广
Future<void> showAd() async {
await ApplovinManage().showAdIfReady(ApplovinManage().adUnitId3);
void showAd() {
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_gallery.dart';
class WallpaperDetView extends GetView<WallpaperDetController> {
const WallpaperDetView({super.key});
class WallpaperDetView extends StatelessWidget {
WallpaperDetView({super.key});
final controller = Get.find<WallpaperDetController>();
@override
Widget build(BuildContext context) {
@ -85,7 +87,7 @@ class WallpaperDetView extends GetView<WallpaperDetController> {
maxScale: PhotoViewComputedScale.covered * 3,
loadingBuilder: (context, event) => loadingView(),
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 'web_page_controller.dart';
class WebPageView extends GetView<WebPageController> {
const WebPageView({super.key});
class WebPageView extends StatelessWidget {
WebPageView({super.key});
final controller = Get.find<WebPageController>();
@override
Widget build(BuildContext context) {

View File

@ -39,44 +39,52 @@ class AppPages {
///
static const about = '/about';
/// WebView页面
static const webPage = '/web_page';
///
static const privacyPolicy = '/privacy_policy';
///
static const termsOfService = '/terms_of_service';
static final routes = [
GetPage(
name: splashScreen,
page: () => const SplashScreenView(),
page: () => SplashScreenView(),
binding: SplashScreenBinding(),
),
GetPage(
name: home,
page: () => const HomeView(),
page: () => HomeView(),
binding: HomeBinding(),
),
GetPage(
name: wallpaperDet,
page: () => const WallpaperDetView(),
page: () => WallpaperDetView(),
binding: WallpaperDetBinding(),
),
GetPage(
name: clsDet,
page: () => const ClsDetView(),
page: () => ClsDetView(),
binding: ClsDetBinding(),
),
GetPage(
name: settings,
page: () => const SettingsView(),
page: () => SettingsView(),
binding: SettingsBinding(),
),
GetPage(
name: webPage,
page: () => const WebPageView(),
name: about,
page: () => AboutView(),
binding: AboutBinding(),
),
GetPage(
name: privacyPolicy,
page: () => WebPageView(),
binding: WebPageBinding(),
),
GetPage(
name: about,
page: () => const AboutView(),
binding: AboutBinding(),
name: termsOfService,
page: () => WebPageView(),
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
# 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.
version: 1.0.0+1
version: 1.0.1+2
environment:
sdk: '>=3.3.4 <4.0.0'