This commit is contained in:
bluesea 2024-05-15 16:03:20 +08:00
parent dce5689ce4
commit badd6b9f13
6 changed files with 135 additions and 15 deletions

View File

@ -5,8 +5,8 @@ import 'package:wallpaper/utils/dbmanager.dart';
// import 'TestApp.dart'; // import 'TestApp.dart';
import 'WallPaperApp.dart'; import 'WallPaperApp.dart';
void main() { void main() async {
DBManager.initAdapter(); await DBManager.initAdapter();
runApp(const WallPaperApp()); runApp(const WallPaperApp());
} }

View File

@ -1,5 +1,42 @@
import 'dart:async';
import 'dart:io';
import 'package:get/get.dart'; 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 { class DownloadPageController extends GetxController {
var dataItems = <LocalImageInfo>[].obs;
// ignore: prefer_typing_uninitialized_variables
var localDir = RxString("");
var isAndroid = Platform.isAndroid;
@override
Future <void> 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 <void> setWallpaper(String imgUrl) async {
await DownloadManager.setWallpaper(imgUrl);
}
} }

View File

@ -1,19 +1,102 @@
import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:transparent_image/transparent_image.dart';
import 'package:wallpaper/pages/downloadpage/downloadpage_controller.dart'; import 'package:wallpaper/pages/downloadpage/downloadpage_controller.dart';
class DownloadPageView extends GetView<DownloadPageController> { class DownloadPageView extends GetView<DownloadPageController> {
const DownloadPageView({super.key}); // const DownloadPageView({super.key});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final Widget bodyView = getBodyWidget();
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: const Text("下载"), title: const Text("下载"),
), ),
body: const Center( body: bodyView,
child: Text("下载的..."),
),
); );
} }
//
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<Widget> getButtomWidge(String imgUrl){
List<Widget> 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;
}
} }

View File

@ -4,7 +4,6 @@ import "package:wallpaper/utils/assettool.dart";
import 'package:wallpaper/models/imgnetodel.dart'; import 'package:wallpaper/models/imgnetodel.dart';
class HomePageController extends GetxController { class HomePageController extends GetxController {
var typeList = <NetImgCategory>[].obs; var typeList = <NetImgCategory>[].obs;
@override @override
void onReady() async{ void onReady() async{
super.onReady(); super.onReady();

View File

@ -1,6 +1,7 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:get/get.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/homePage/homePage_view.dart';
import 'package:wallpaper/pages/collectionpage/collectionpage_view.dart'; import 'package:wallpaper/pages/collectionpage/collectionpage_view.dart';
import 'package:wallpaper/pages/mypage/mypage_view.dart'; import 'package:wallpaper/pages/mypage/mypage_view.dart';
@ -36,8 +37,8 @@ class TabbarPageView extends GetView <TabbarPageController>{
label: "Home" label: "Home"
), ),
const BottomNavigationBarItem( const BottomNavigationBarItem(
icon: Icon(Icons.collections), icon: Icon(Icons.download),
label: "收藏" label: "下载"
), ),
const BottomNavigationBarItem( const BottomNavigationBarItem(
icon: Icon(Icons.person), icon: Icon(Icons.person),
@ -48,7 +49,7 @@ class TabbarPageView extends GetView <TabbarPageController>{
//tabitem对应控制器视图, //tabitem对应控制器视图,
List<Widget> getPages(){ List<Widget> getPages(){
return [const HomePageView(),const CollectionPageView(),const MyPageView(),]; return [const HomePageView(), DownloadPageView(),const MyPageView(),];
} }

View File

@ -16,14 +16,13 @@ class LocalImageInfo extends HiveObject {
} }
class DBManager { class DBManager {
static late Box box; static late Box<LocalImageInfo> box;
static Future<Box> initAdapter()async { static Future<void> initAdapter()async {
await Hive.initFlutter(); await Hive.initFlutter();
Hive.registerAdapter(LocalImageInfoAdapter()); Hive.registerAdapter(LocalImageInfoAdapter());
var downloadAlbums = await Hive.openBox('DownloadAlbums'); var downloadAlbums = await Hive.openBox<LocalImageInfo>('DownloadAlbums');
DBManager.box = downloadAlbums; DBManager.box = downloadAlbums;
return downloadAlbums;
} }
static addImg(String localFileName) { static addImg(String localFileName) {
@ -35,7 +34,8 @@ class DBManager {
} }
static List<LocalImageInfo> allImgs() { static List<LocalImageInfo> allImgs() {
return DBManager.box.values.toList() as List<LocalImageInfo>; var lis = DBManager.box.values.toList();
return lis ;
} }