diff --git a/wallpaper/lib/models/imgnetodel.dart b/wallpaper/lib/models/imgnetodel.dart new file mode 100644 index 0000000..94d4658 --- /dev/null +++ b/wallpaper/lib/models/imgnetodel.dart @@ -0,0 +1,63 @@ +// import 'dart:convert'; +// https://ashamp.github.io/jsonToDartModel/ +class NetImgItem { + String? banner; + String? original; + String? previewThumb; + String? source; + + NetImgItem({ + required this.banner, + required this.original, + required this.previewThumb, + required this.source, + }); + NetImgItem.fromJson(Map json) { + banner = json['banner'].toString(); + original = json['original'].toString(); + previewThumb = json['previewThumb'].toString(); + source = json['source'].toString(); + } + Map toJson() { + final data = {}; + data['banner'] = banner; + data['original'] = original; + data['previewThumb'] = previewThumb; + data['source'] = source; + return data; + } +} + +class NetImgCategory { + List? data; + String? name; + + NetImgCategory({ + required this.data, + required this.name, + }); + NetImgCategory.fromJson(Map json) { + if (json['data'] != null) { + final v = json['data']; + final arr0 = []; + v.forEach((v) { + arr0.add(NetImgItem.fromJson(v)); + }); + this.data = arr0; + } + name = json['name'].toString(); + } + Map toJson() { + final data = {}; + if (this.data != null) { + final v = this.data!; + final arr0 = []; + v.forEach((v) { + arr0.add(v.toJson()); + }); + data['data'] = arr0; + } + data['name'] = name; + return data; + } +} diff --git a/wallpaper/lib/pages/homepage/homepage_controller.dart b/wallpaper/lib/pages/homepage/homepage_controller.dart index 7a3bab4..1bf61f3 100644 --- a/wallpaper/lib/pages/homepage/homepage_controller.dart +++ b/wallpaper/lib/pages/homepage/homepage_controller.dart @@ -1,8 +1,8 @@ import 'package:get/get.dart'; import "package:wallpaper/utils/assettool.dart"; - +import 'package:wallpaper/models/imgnetodel.dart'; class HomePageController extends GetxController { - var typeList = [].obs; + var typeList = [].obs; @override void onReady() async{ @@ -13,13 +13,6 @@ class HomePageController extends GetxController { void setupTypeListData() async{ var temData = await loadWallpaperJsonFromAsset(); - temData.forEach((element) { }) + typeList.value = temData.map((e) => NetImgCategory.fromJson(e)).toList(); } - - @override - void onInit() async { - super.onInit(); - - } - } \ No newline at end of file diff --git a/wallpaper/lib/pages/homepage/homepage_view.dart b/wallpaper/lib/pages/homepage/homepage_view.dart index c3c97cc..8815a4b 100644 --- a/wallpaper/lib/pages/homepage/homepage_view.dart +++ b/wallpaper/lib/pages/homepage/homepage_view.dart @@ -2,6 +2,7 @@ // import 'dart:js'; import 'package:flutter/material.dart'; +import 'package:flutter/widgets.dart'; import 'package:get/get.dart'; import 'package:transparent_image/transparent_image.dart'; import 'package:wallpaper/pages/homepage/homepage_controller.dart'; @@ -39,12 +40,32 @@ class HomePageView extends GetView { Widget getBodyWidget(){ return Obx(() => GridView.count( crossAxisCount: 2, + mainAxisSpacing: 10, + crossAxisSpacing: 10, + childAspectRatio: 0.7, + padding: const EdgeInsets.symmetric(horizontal: 10), children: List.generate(controller.typeList.length, (index) { - return Center( - child: FadeInImage.memoryNetwork( + return Stack(//堆叠效果 + children: [ + FadeInImage.memoryNetwork( + width: double.infinity, + height: double.infinity, placeholder: kTransparentImage, - image: controller.typeList[index]["data"][0]["previewThumb"], + image: controller.typeList[index].data![0].previewThumb!, + fit: BoxFit.cover, ), + Align( + alignment: Alignment.bottomCenter, + child: Text( + controller.typeList[index].name!, + style: const TextStyle( + color: Colors.white + ), + + ), + ), + + ], ); }), ));