修复部分问题,优化部分代码
This commit is contained in:
parent
f632ea9643
commit
7087882d46
@ -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
|
||||
|
||||
@ -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",
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -41,7 +41,7 @@ void main() async {
|
||||
};
|
||||
|
||||
// 初始化广告sdk
|
||||
// await ApplovinManage().initApplovin();
|
||||
await ApplovinManage().initApplovin();
|
||||
|
||||
// 初始化Hive
|
||||
await initHive();
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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',
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
|
||||
@ -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',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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',
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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,
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/// 点击设置
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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'
|
||||
});
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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() {
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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),
|
||||
),
|
||||
);
|
||||
}),
|
||||
|
||||
@ -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) {
|
||||
|
||||
@ -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(),
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
@ -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'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user