From badd6b9f137bb2015973487bc4ada8536a530bdd Mon Sep 17 00:00:00 2001 From: bluesea <307723040@qq.com> Date: Wed, 15 May 2024 16:03:20 +0800 Subject: [PATCH] s --- wallpaper/lib/main.dart | 4 +- .../downloadpage/downloadpage_controller.dart | 37 ++++++++ .../pages/downloadpage/downloadpage_view.dart | 91 ++++++++++++++++++- .../pages/homepage/homepage_controller.dart | 1 - .../lib/pages/tabarpage/tabarpage_view.dart | 7 +- wallpaper/lib/utils/dbmanager.dart | 10 +- 6 files changed, 135 insertions(+), 15 deletions(-) diff --git a/wallpaper/lib/main.dart b/wallpaper/lib/main.dart index e751a8b..6aad2c7 100644 --- a/wallpaper/lib/main.dart +++ b/wallpaper/lib/main.dart @@ -5,8 +5,8 @@ import 'package:wallpaper/utils/dbmanager.dart'; // import 'TestApp.dart'; import 'WallPaperApp.dart'; -void main() { - DBManager.initAdapter(); +void main() async { + await DBManager.initAdapter(); runApp(const WallPaperApp()); } diff --git a/wallpaper/lib/pages/downloadpage/downloadpage_controller.dart b/wallpaper/lib/pages/downloadpage/downloadpage_controller.dart index 22b052e..325af39 100644 --- a/wallpaper/lib/pages/downloadpage/downloadpage_controller.dart +++ b/wallpaper/lib/pages/downloadpage/downloadpage_controller.dart @@ -1,5 +1,42 @@ +import 'dart:async'; +import 'dart:io'; + import 'package:get/get.dart'; +import 'package:wallpaper/utils/dbmanager.dart'; +import 'package:wallpaper/utils/downloadmanager.dart'; +import 'package:wallpaper/utils/local_img_manager.dart'; class DownloadPageController extends GetxController { + var dataItems = [].obs; + // ignore: prefer_typing_uninitialized_variables + var localDir = RxString(""); + var isAndroid = Platform.isAndroid; + @override + Future onInit() async{ + super.onInit(); + localDir.value = await LocalImgManager.getImgLocalDir(); + dataItems.value = DBManager.allImgs(); + } + + + Future < void> saveImgToAlbum(String imgUrl) async { + await DownloadManager.saveNetworkImage(imgUrl); + + //如果是android,还应该调用设置壁纸的功能 + // if (Platform.isAndroid) { + + // } + + + //给结果提示框 + //.... + } + + Future setWallpaper(String imgUrl) async { + await DownloadManager.setWallpaper(imgUrl); + } + + + } \ No newline at end of file diff --git a/wallpaper/lib/pages/downloadpage/downloadpage_view.dart b/wallpaper/lib/pages/downloadpage/downloadpage_view.dart index 1f1bff3..ac17805 100644 --- a/wallpaper/lib/pages/downloadpage/downloadpage_view.dart +++ b/wallpaper/lib/pages/downloadpage/downloadpage_view.dart @@ -1,19 +1,102 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:transparent_image/transparent_image.dart'; import 'package:wallpaper/pages/downloadpage/downloadpage_controller.dart'; class DownloadPageView extends GetView { - const DownloadPageView({super.key}); + // const DownloadPageView({super.key}); @override Widget build(BuildContext context) { + final Widget bodyView = getBodyWidget(); return Scaffold( appBar: AppBar( title: const Text("下载"), ), - body: const Center( - child: Text("下载的..."), - ), + body: bodyView, ); } + + + //返回内容 + Widget getBodyWidget(){ + return Obx(() => GridView.count( + crossAxisCount: 2, + mainAxisSpacing: 2, + crossAxisSpacing: 2, + childAspectRatio: 0.7, + padding: const EdgeInsets.symmetric(horizontal: 5), + // padding: const EdgeInsets.fromLTRB(5, 50, 5, 0), + children: List.generate(controller.dataItems.length, (index) { + return getBodyItem(controller.dataItems[index].localUrl!); + }), + )); + } + + Stack getBodyItem(String fileName) { + var imgUrl = controller.localDir.value +'/'+ fileName; + return Stack(//堆叠效果 + children: [ + Image.file( + File(imgUrl), + width: double.infinity, + height: double.infinity, + fit: BoxFit.cover, + ), + // Image.file(imgUrl), + // FadeInImage.loadImageByFile( + // width: double.infinity, + // height: double.infinity, + // placeholder: kTransparentImage, + // image: imgUrl, + // fit: BoxFit.cover, + // ), + + Material( + color: Colors.transparent, + child: InkWell( + onTap: () { + //前往看大图 + //..... + }, + child: Align( + alignment: Alignment.bottomCenter, + child: Container( + color: Colors.black.withAlpha(160), + height: 40, + width: double.infinity, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.max, + // 交叉轴的布局方式,对于column来说就是水平方向的布局方式 + crossAxisAlignment: CrossAxisAlignment.center, + children: getButtomWidge(imgUrl), + ), + ), + ), + ), + ), + + ], + ); + } + + + List getButtomWidge(String imgUrl){ + List wg = [ + IconButton(onPressed:() { + controller.saveImgToAlbum(imgUrl); + + }, icon: const Icon(Icons.album),color: Colors.white,), + ]; + if (controller.isAndroid) { + wg.add(IconButton(onPressed:() { + controller.setWallpaper(imgUrl); + + }, icon: const Icon(Icons.wallpaper),color: Colors.white,)); + } + return wg; + } } \ No newline at end of file diff --git a/wallpaper/lib/pages/homepage/homepage_controller.dart b/wallpaper/lib/pages/homepage/homepage_controller.dart index af29360..ba69fbd 100644 --- a/wallpaper/lib/pages/homepage/homepage_controller.dart +++ b/wallpaper/lib/pages/homepage/homepage_controller.dart @@ -4,7 +4,6 @@ import "package:wallpaper/utils/assettool.dart"; import 'package:wallpaper/models/imgnetodel.dart'; class HomePageController extends GetxController { var typeList = [].obs; - @override void onReady() async{ super.onReady(); diff --git a/wallpaper/lib/pages/tabarpage/tabarpage_view.dart b/wallpaper/lib/pages/tabarpage/tabarpage_view.dart index 7ffc410..041b14c 100644 --- a/wallpaper/lib/pages/tabarpage/tabarpage_view.dart +++ b/wallpaper/lib/pages/tabarpage/tabarpage_view.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:get/get.dart'; +import 'package:wallpaper/pages/downloadpage/downloadpage_view.dart'; import 'package:wallpaper/pages/homePage/homePage_view.dart'; import 'package:wallpaper/pages/collectionpage/collectionpage_view.dart'; import 'package:wallpaper/pages/mypage/mypage_view.dart'; @@ -36,8 +37,8 @@ class TabbarPageView extends GetView { label: "Home" ), const BottomNavigationBarItem( - icon: Icon(Icons.collections), - label: "收藏" + icon: Icon(Icons.download), + label: "下载" ), const BottomNavigationBarItem( icon: Icon(Icons.person), @@ -48,7 +49,7 @@ class TabbarPageView extends GetView { //返回每个tabitem对应控制器视图,必须一一对应 List getPages(){ - return [const HomePageView(),const CollectionPageView(),const MyPageView(),]; + return [const HomePageView(), DownloadPageView(),const MyPageView(),]; } diff --git a/wallpaper/lib/utils/dbmanager.dart b/wallpaper/lib/utils/dbmanager.dart index a60619d..90b7c04 100644 --- a/wallpaper/lib/utils/dbmanager.dart +++ b/wallpaper/lib/utils/dbmanager.dart @@ -16,14 +16,13 @@ class LocalImageInfo extends HiveObject { } class DBManager { - static late Box box; + static late Box box; - static Future initAdapter()async { + static Future initAdapter()async { await Hive.initFlutter(); Hive.registerAdapter(LocalImageInfoAdapter()); - var downloadAlbums = await Hive.openBox('DownloadAlbums'); + var downloadAlbums = await Hive.openBox('DownloadAlbums'); DBManager.box = downloadAlbums; - return downloadAlbums; } static addImg(String localFileName) { @@ -35,7 +34,8 @@ class DBManager { } static List allImgs() { - return DBManager.box.values.toList() as List; + var lis = DBManager.box.values.toList(); + return lis ; }