import 'dart:convert'; import 'package:easy_refresh/easy_refresh.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:get/get_rx/get_rx.dart'; import 'package:wallpaperx/common/components/easy_loading.dart'; import 'package:wallpaperx/common/http/http_util.dart'; import 'package:wallpaperx/common/http/url.dart'; import 'package:wallpaperx/common/utils/log_print.dart'; import 'package:wallpaperx/entity/image_model.dart'; import 'package:wallpaperx/routes/app_pages.dart'; class CSearchController extends GetxController { late final EasyRefreshController refreshController; late ScrollController scrollController; RxList searchList = [].obs; RxInt total = 0.obs; TextEditingController searchController = TextEditingController(); FocusNode searchFocusNode = FocusNode(); List tags = [ "人像摄影", "动物摄影", "风景", "产品摄影", "其他摄影", "商品", "工艺品", "玩具手办", "汽车交通", "其他模型功能", "植物", "动物", "食物", ]; /// 页码、每页数量 int skip = 0; int limit = 20; @override void onInit() { super.onInit(); scrollController = ScrollController(initialScrollOffset: 0.0); refreshController = EasyRefreshController(controlFinishLoad: true); } @override void onClose() { super.onClose(); refreshController.dispose(); } void getImages() { if (searchController.text.isNotEmpty) { loading(show: true); HttpUtil.get(Url.searchImages, (callback) async { if (callback != null) { dynamic res = json.decode(callback); refreshController.finishLoad(); if (res["images"] != null && res["images"].length > 0) { total.value = res["total"]; List list = List.from(res["images"]); searchList.clear(); searchList.addAll(list.map((e) => ImageModel.fromJson(e)).toList()); } else { toast("The search result is empty"); } } dismiss(dismiss: true); }, params: { "limit": limit, "skip": skip, "query": searchController.text }); } else { LogPrint.d("搜索内容不能为空"); } } /// 上拉加载 void onLoad() { skip += limit; HttpUtil.get(Url.searchImages, (callback) async { if (callback != null) { dynamic res = json.decode(callback); refreshController.finishLoad(); if (res["images"] != null) { List list = List.from(res["images"]); searchList.addAll(list.map((e) => ImageModel.fromJson(e)).toList()); } } }, params: {"limit": limit, "skip": skip, "query": searchController.text}); } /// 点击壁纸 void onTapItem(int index) { Get.toNamed(AppPages.wallpaperDet, arguments: { 'position': index, 'wallpaperList': searchList, }); } setSearchText(tag) { if (tag != "") { searchController.text = tag; searchFocusNode.requestFocus(); } } }