Commit bfc4cc32 authored by netyouli's avatar netyouli

添加删除我的作品和优化loading和优化下拉刷新出现卡死的问题

parent 6de4fa33
......@@ -68,11 +68,12 @@ class NewsAPI {
}
// 生成图片
static Future<MidJourneyModel> createImageByMidJourney(String question, int conversionId) async {
static Future<MidJourneyModel> createImageByMidJourney(String question, int conversionId, String useModel) async {
var response = await HttpUtil().post('/midJourney/createImageByMidJourney', data: {
"conversionId": conversionId,
"next": 0,
"question": question
"question": question,
"useModel": useModel
});
return MidJourneyModel.fromJson(response);
}
......@@ -116,7 +117,7 @@ class NewsAPI {
return TranslateModel.fromJson(response.data);
}
// 发到广场
static Future<CommonResponse> shareImageSquare(String imgId) async {
var response = await HttpUtil().get(
'/imgInfo/shareSquare/$imgId',
......@@ -124,6 +125,17 @@ class NewsAPI {
return CommonResponse.fromJson(response);
}
// 删除我的作品图片
static Future<CommonResponse> deleteMyWorkImage(int imgId) async {
var response = await HttpUtil().get(
'/imgInfo/deleteImage',
queryParameters: {
"id": imgId
}
);
return CommonResponse.fromJson(response);
}
// 收藏图片
static Future<CommonResponse> updateCollectImg(String imgUrl, int isCancel, String prompt) async {
var response = await HttpUtil().post('/imgInfo/updateCollectImg', data: {
......@@ -141,16 +153,18 @@ class NewsAPI {
// "conversionId": conversionId,
// "next": 0,
"urls": urls,
"useModel": ""
// "question": question
});
return MidJourneyModel.fromJson(response);
}
// 生成图片 v1-v4 u1-u4
static Future<MidJourneyModel> createImageByButtonMidJourney(String button, String buttonMessageId) async {
static Future<MidJourneyModel> createImageByButtonMidJourney(String button, String buttonMessageId, String useModel) async {
var response = await HttpUtil().post('/midJourney/createImageByButton', data: {
"buttonMessageId": buttonMessageId,
"next": 0,
"useModel": useModel,
"button": button
});
return MidJourneyModel.fromJson(response);
......
......@@ -18,6 +18,7 @@ import 'package:get/get.dart';
// import 'package:social_login_buttons/social_login_buttons.dart';
import '../../entity/user_entity.dart';
import '../utils/loading.dart';
class UserStore extends GetxController {
static UserStore get to => Get.put(UserStore());
......@@ -63,7 +64,7 @@ class UserStore extends GetxController {
// Get.offAndToNamed(AppRoutes.WILL_COME);
} else {
ApplicationController.to.state.isNetWorkErr = false;
EasyLoading.dismiss();
Loading.dismiss();
// await refreshInfo();
// Get.offAndToNamed(AppRoutes.Application);
......
......@@ -12,6 +12,7 @@ class AppColor {
static const Color gray6 = Color.fromARGB(255, 30, 30, 30);
static const Color gray7 = Color.fromARGB(255, 50, 50, 50);
static const Color gray8 = Color.fromARGB(255, 200, 200, 200);
static const Color gray9 = Color.fromARGB(255, 38, 38, 38);
static const Color black1 = Color.fromARGB(255, 20, 20, 20);
static const Color gradient_back1 = Color.fromARGB(255, 15, 24, 29);
......
......@@ -22,7 +22,27 @@ class Loading {
static void show([String? text]) {
EasyLoading.instance.userInteractions = false;
EasyLoading.show(status: text ?? 'Loading...');
final status = text; //?? '正在加载...';
EasyLoading.show(
status: status,
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: Image.asset("assets/images/networkLoading.gif", width: 80, height: 80,)
);
/**
* EasyLoading.show(
status: "正在加载我的收藏",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
*/
}
static void showError(String status) {
EasyLoading.showError(status);
}
static void toast(String text) {
......
// baidu yapi
// const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008';
// const SERVER_API_URL = 'http://101.34.153.228:8083/api';//线上
const SERVER_API_URL = 'http://101.34.153.228:8083/api';//线上
// const SERVER_API_URL = 'http://192.168.110.116:8083/api';//内
// const SERVER_API_URL = 'http://192.168.110.12:8083/api';//线上
......@@ -11,7 +11,7 @@
// http://192.168.110.127:8083/api/doc.html
// http://192.168.110.66:8083/api/doc.html
const SERVER_API_URL = 'http://192.168.110.1:8083/api'; // 大黄蜂
// const SERVER_API_URL = 'http://192.168.120.34:8083/api'; // 大黄蜂
// const SERVER_API_URL = 'http://192.168.110.193:8083/api'; // 清
// http://192.168.110.25:8083/
......
import 'dart:typed_data';
import 'package:chart/common/style/color.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:fluwx/fluwx.dart';
......@@ -10,7 +11,7 @@ import 'package:share_plus/share_plus.dart';
class WXShare {
static const _dataMap = {
"微信好友": "assets/images/wx_session.png",
"微信好友": "assets/images/wx_session.jpg",
"微信朋友圈": "assets/images/wx_timeline.png",
"微信收藏": "assets/images/wx_favorite.png",
"其他分享": "assets/images/wx_other.png"
......@@ -59,11 +60,38 @@ class WXShare {
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(20))
),
padding: const EdgeInsets.fromLTRB(20, 20, 20, 100),
child: Wrap(
spacing: 30,
children: items,
),
padding: const EdgeInsets.fromLTRB(20, 10, 20, 50),
child: SizedBox(
height: 160,
child: Column(
children: [
Row(
children: [
const SizedBox(
width: 30,
height: 30,
),
const Expanded(child: Align(
alignment: Alignment.center,
child: Text("分享"),
)),
InkWell(
onTap:() {
Get.back();
},
child: Image.asset("assets/images/清空图片.png", width: 30, height: 30,),
)
],
),
const SizedBox(height: 30,),
Wrap(
alignment: WrapAlignment.center,
spacing: 30,
children: items,
)
],
),
),
));
}
......@@ -98,9 +126,9 @@ class WXShare {
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Image.asset(image, width: 60, height: 60,),
Image.asset(image, width: 30, height: 30,),
const SizedBox(height: 8),
Text(title, style: const TextStyle(fontSize: 14, color: Colors.black)),
Text(title, style: const TextStyle(fontSize: 14, color: Colors.white)),
],
),
)
......@@ -108,13 +136,40 @@ class WXShare {
});
Get.bottomSheet(Container(
decoration: const BoxDecoration(
color: Colors.white,
color: AppColor.gray9,
borderRadius: BorderRadius.all(Radius.circular(20))
),
padding: const EdgeInsets.fromLTRB(20, 20, 20, 100),
child: Wrap(
spacing: 30,
children: items,
padding: const EdgeInsets.fromLTRB(20, 10, 20, 50),
child: SizedBox(
height: 160,
child: Column(
children: [
Row(
children: [
const SizedBox(
width: 30,
height: 30,
),
const Expanded(child: Align(
alignment: Alignment.center,
child: Text("分享"),
)),
InkWell(
onTap:() {
Get.back();
},
child: Image.asset("assets/images/清空图片.png", width: 30, height: 30,),
)
],
),
const SizedBox(height: 30,),
Wrap(
alignment: WrapAlignment.center,
spacing: 30,
children: items,
)
],
),
),
));
}
......
import 'dart:io';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter_native_splash/flutter_native_splash.dart';
import 'package:chart/pages/frame/product/bindings.dart';
import 'package:chart/pages/home/index.dart';
......@@ -16,7 +17,6 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:glassy/glassy.dart';
import 'package:glassy/glassy_config.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:fluwx/fluwx.dart';
void main() async {
......@@ -25,6 +25,26 @@ void main() async {
await Global.init();
PaintingBinding.instance.imageCache.maximumSize = 1000000;
PaintingBinding.instance.imageCache.maximumSizeBytes = 300 << 20;
EasyRefresh.defaultHeaderBuilder = () => const ClassicHeader(
showMessage: false,
dragText: "下拉刷新",
readyText: "刷新数据中",
armedText: "松开刷新",
failedText: "刷新失败",
noMoreText: "没有更多数据",
processedText: "刷新数据成功",
processingText: "刷新数据中"
);
EasyRefresh.defaultFooterBuilder = () => const ClassicFooter(
showMessage: false,
dragText: "上拉刷新",
readyText: "加载更多数据中",
armedText: "松开加载更多",
failedText: "加载更多失败",
noMoreText: "没有更多数据",
processedText: "加载更多成功",
processingText: "加载更多数据中"
);
Glassy().setConfig(GlassyConfig(
radius: 16,
backgroundColor: Color.fromARGB(255, 217, 217, 217),
......
......@@ -74,6 +74,7 @@ class AIDrawImageResultController extends GetxController {
imageUrls = arguments["imageUrls"] ?? [];
messageId = arguments["messageId"] ?? "";
modelType = arguments["modelType"] ?? MakeModelType.MJ;
didCollected.value = arguments["didCollected"] ?? false;
}
@override
......@@ -104,9 +105,9 @@ class AIDrawImageResultController extends GetxController {
}
void shareToSquare() async {
EasyLoading.show(status: "分享到广场中...");
Loading.show();
final res = await NewsAPI.shareImageSquare(messageId);
EasyLoading.dismiss();
Loading.dismiss();
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -121,9 +122,9 @@ class AIDrawImageResultController extends GetxController {
void doCollect() async {
if (didCollected.value) {
EasyLoading.show(status: "取消收藏中...");
Loading.show();
final res = await NewsAPI.updateCollectImg(resultImageUrl, 0, enText);
EasyLoading.dismiss();
Loading.dismiss();
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -136,9 +137,9 @@ class AIDrawImageResultController extends GetxController {
}
}
} else {
EasyLoading.show(status: "收藏中...");
Loading.show();
final res = await NewsAPI.updateCollectImg(resultImageUrl, 1, enText);
EasyLoading.dismiss();
Loading.dismiss();
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -179,7 +180,7 @@ class AIDrawImageResultController extends GetxController {
if (progress == 100) {
showProgressView.value = false;
_timer?.cancel();
EasyLoading.dismiss();
Loading.dismiss();
}
}
return;
......@@ -188,16 +189,16 @@ class AIDrawImageResultController extends GetxController {
// 点击v和u
void clickBottomButton(String title) async {
progress.value = 0;
EasyLoading.show(status: "AI正在生成中...");
Loading.show();
try {
// state.isLoading = true;
final res = await NewsAPI.createImageByButtonMidJourney(title, _buttonMessageId);
final res = await NewsAPI.createImageByButtonMidJourney(title, _buttonMessageId, s);
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
// state.isLoading = false;
} else {
EasyLoading.dismiss();
Loading.dismiss();
showProgressView.value = true;
startTimer();
await initEventSource(res.data ?? "");
......@@ -205,7 +206,7 @@ class AIDrawImageResultController extends GetxController {
// state.isLoading = false;
} catch (e) {
// state.isLoading = false;
EasyLoading.dismiss();
Loading.dismiss();
}
}
......@@ -239,7 +240,7 @@ class AIDrawImageResultController extends GetxController {
makeBlendImage();
break;
case OpearterType.imageResult: {
EasyLoading.show(status: "正在加载中");
Loading.show();
resultImageUrl = imageUrls.isNotEmpty ? imageUrls.first : "";
await loadImage(resultImageUrl, 100);
}
......@@ -252,7 +253,7 @@ class AIDrawImageResultController extends GetxController {
progress.value = 0;
// final question = '$text --ar $ratio$s';
// Logger.debugPrint("question = $question");
EasyLoading.show(status: "AI正在生成中...");
Loading.show();
try {
// state.isLoading = true;
final res = await NewsAPI.blendImageByMidJourney(imageUrls);
......@@ -261,7 +262,7 @@ class AIDrawImageResultController extends GetxController {
Get.toNamed(AppRoutes.SIGN_IN);
// state.isLoading = false;
} else {
EasyLoading.dismiss();
Loading.dismiss();
if (res.data == null) {
EasyLoading.showToast(res.message ?? "未知错误");
} else {
......@@ -273,7 +274,7 @@ class AIDrawImageResultController extends GetxController {
// state.isLoading = false;
} catch (e) {
// state.isLoading = false;
EasyLoading.dismiss();
Loading.dismiss();
}
}
......@@ -292,16 +293,16 @@ class AIDrawImageResultController extends GetxController {
}
}
Logger.debugPrint("question = $question");
EasyLoading.show(status: "AI正在生成中...");
Loading.show();
try {
// state.isLoading = true;
final res = await NewsAPI.createImageByMidJourney(question, conversionId);
final res = await NewsAPI.createImageByMidJourney(question, conversionId, s);
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
// state.isLoading = false;
} else {
EasyLoading.dismiss();
Loading.dismiss();
if (res.data == null) {
EasyLoading.showToast(res.message ?? "未知错误");
} else {
......@@ -333,7 +334,7 @@ class AIDrawImageResultController extends GetxController {
question = '$enText';
}
Logger.debugPrint("question = $question");
// EasyLoading.show(status: "AI正在生成中...");
// Loading.show();
try {
/*
final res = await NewsAPI.createlmageBySdTxtTolmg(question, conversionId);
......@@ -342,7 +343,7 @@ class AIDrawImageResultController extends GetxController {
Get.toNamed(AppRoutes.SIGN_IN);
// state.isLoading = false;
} else {
EasyLoading.dismiss();
Loading.dismiss();
if (res.data == null) {
EasyLoading.showToast(res.message ?? "未知错误");
} else {
......
......@@ -100,26 +100,45 @@ class AIDrawImageResultPage extends GetView<AIDrawImageResultController> {
));
}
Widget makeBlurView() {
return Obx(() => Stack(
children: [
Visibility(
visible: controller.imageData.value != null,
child: FadeInImage(
image: MemoryImage(controller.imageData.value ?? Uint8List(0)),
placeholder: MemoryImage(controller.placehoderImageData ?? Uint8List(0)),
fit: BoxFit.fitHeight,width: Get.width, height: Get.height,
)
),
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Colors.white.withOpacity(0.3),
width: Get.width, height: Get.height,
Widget makeBackgroundView() {
return Obx(() => Visibility(
visible: controller.imageData.value == null,
child: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [
AppColor.gradient_back1.withOpacity(1.0 - (controller.progress.value.toDouble() / 100.0)),
AppColor.gradient_back2.withOpacity(1.0 - (controller.progress.value.toDouble() / 100.0)),
AppColor.gradient_back3.withOpacity(1.0 - (controller.progress.value.toDouble() / 100.0))],
),
),
],
));
)
))
);
}
Widget makeBlurView() {
return Obx(() => Visibility(
visible: controller.imageData.value != null,
child: Stack(
children: [
FadeInImage(
image: MemoryImage(controller.imageData.value ?? Uint8List(0)),
placeholder: MemoryImage(controller.placehoderImageData ?? Uint8List(0)),
fit: BoxFit.fitHeight,width: Get.width, height: Get.height,
),
BackdropFilter(
filter: ImageFilter.blur(sigmaX: 10, sigmaY: 10),
child: Container(
color: Colors.white.withOpacity(0.3),
width: Get.width, height: Get.height,
),
)
],
)
),
);
}
@override
......@@ -129,6 +148,7 @@ class AIDrawImageResultPage extends GetView<AIDrawImageResultController> {
init: AIDrawImageResultController(),
builder: (_) => Stack(
children: [
makeBackgroundView(),
makeBlurView(),
Scaffold(
backgroundColor: Colors.transparent,
......@@ -169,9 +189,9 @@ class AIDrawImageResultPage extends GetView<AIDrawImageResultController> {
color: AppColor.primary,
borderRadius: BorderRadius.circular(20),
),
child: Image(image: AssetImage("assets/images/${controller.didCollected.value ? 'collect_selected_icon.png' : 'collect_normal_icon.png'}"),
width: 20,
height: 20,)
child: Obx(() => Image(image: AssetImage("assets/images/${controller.didCollected.value ? 'collect_selected_icon.png' : 'collect_normal_icon.png'}"),
width: 20,
height: 20,))
),
),
),
......@@ -286,7 +306,7 @@ class AIDrawImageResultPage extends GetView<AIDrawImageResultController> {
borderRadius: BorderRadius.circular(22)
),
alignment: Alignment.center,
child: const Text("生成同款(2金币)"),
child: const Text("生成同款(2积分)"),
),
),
],
......
......@@ -4,6 +4,7 @@ import 'dart:math';
import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/utils/utils.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart';
......@@ -111,12 +112,12 @@ class AIDrawImageController extends GetxController {
}
onPullRefresh(RefreshController refreshController) {
onPullRefresh(EasyRefreshController refreshController) {
page = 1;
requestSquareImages(false, refreshController);
}
onLoadMore(RefreshController refreshController) {
onLoadMore(EasyRefreshController refreshController) {
page += 1;
requestSquareImages(true, refreshController);
}
......@@ -148,7 +149,7 @@ class AIDrawImageController extends GetxController {
if (index >= 0 && index < squareImgaes.value.length) {
final item = squareImgaes.value[index];
final conversionId = await UserAPI.createConversion();
EasyLoading.dismiss();
Loading.dismiss();
if (conversionId == 401) {
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -163,30 +164,29 @@ class AIDrawImageController extends GetxController {
"ratio": "16:9",
"s": "",
"styleName": item.style ?? "--v 5.2",
"messageId": item.messageId ?? ""
"messageId": item.messageId ?? "",
"didCollected": item.isCancel == 1
});
}
}
}
requestSquareImages(bool ismore, RefreshController? refreshController) async {
requestSquareImages(bool ismore, EasyRefreshController? refreshController) async {
if (!ismore) {
EasyLoading.show(
status: "正在加载广场图片",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show();
}
final res = await UserAPI.getSquareImages(page);
if (ismore) {
refreshController?.loadComplete();
if (res.data?.isEmpty ?? true) {
refreshController?.finishLoad(IndicatorResult.noMore);
} else {
refreshController?.finishLoad(IndicatorResult.success);
}
} else {
refreshController?.refreshCompleted();
refreshController?.finishRefresh();
refreshController?.resetFooter();
}
EasyLoading.dismiss();
Loading.dismiss();
if (res.status == 200) {
if (ismore) {
squareImgaes.value.addAll(res.data ?? []);
......@@ -217,14 +217,7 @@ class AIDrawImageController extends GetxController {
blendAssets.add(image);
}
}
EasyLoading.show(
status: "正在上传,请稍后",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show("正在上传,请稍后...");
for (var i = 0; i < count; i++) {
final image = images[i];
final res = await NewsAPI.uploadFile([File(image.path)]);
......@@ -237,7 +230,7 @@ class AIDrawImageController extends GetxController {
EasyLoading.showToast(res.message ?? "未知错误");
} else {
if (i == count - 1) {
EasyLoading.dismiss();
Loading.dismiss();
}
uploadBlendImageUrls.add(res.data ?? "");
}
......@@ -254,14 +247,7 @@ class AIDrawImageController extends GetxController {
}
if (image == null) return null;
textAssets.add(image);
EasyLoading.show(
status: "正在上传,请稍后",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show("正在上传,请稍后");
final res = await NewsAPI.uploadFile([File(image.path)]);
if (res.status == 401) {
EasyLoading.showInfo('您还未登录,请登录后体验功能。');
......@@ -271,7 +257,7 @@ class AIDrawImageController extends GetxController {
if (res.data == null) {
EasyLoading.showToast(res.message ?? "未知错误");
} else {
EasyLoading.dismiss();
Loading.dismiss();
uploadTextImageUrls.add(res.data ?? "");
}
}
......@@ -282,17 +268,10 @@ class AIDrawImageController extends GetxController {
EasyLoading.showError("请选择2-5张图片");
return;
}
EasyLoading.show(
status: "加载中",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show();
Vibrate.feedback(FeedbackType.impact);
final conversionId = await UserAPI.createConversion();
EasyLoading.dismiss();
Loading.dismiss();
if (conversionId == 401) {
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -315,18 +294,11 @@ class AIDrawImageController extends GetxController {
EasyLoading.showInfo('请输入生成图片的描述');
return;
}
EasyLoading.show(
status: "加载中",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show();
Vibrate.feedback(FeedbackType.impact);
final transformModel = await NewsAPI.translate(textController.text);
final conversionId = await UserAPI.createConversion();
EasyLoading.dismiss();
Loading.dismiss();
if (conversionId == 401) {
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......
import 'package:cached_network_image/cached_network_image.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'controller.dart';
class ImageSquareListView extends StatelessWidget {
late var refreshController = RefreshController();
@override
Widget build(BuildContext context) {
// TODO: implement build
EasyRefreshController easyController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true
);
Widget makeContent() {
final controller = Get.find<AIDrawImageController>();
return Obx(() => SmartRefresher(
enablePullUp: true,
controller: refreshController,
onRefresh: () => controller.onPullRefresh(refreshController),
onLoading: () => controller.onLoadMore(refreshController),
header: const ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"
),
footer: const ClassicFooter(
loadingText: "正在加载中...",
noDataText: '没有更多数据啦'
),
return Obx(() => EasyRefresh(
controller: easyController,
onRefresh: () => controller.onPullRefresh(easyController),
onLoad: () => controller.onLoadMore(easyController),
child: MasonryGridView.count(
controller: ScrollController(),
padding: const EdgeInsets.fromLTRB(10, 10, 10, 10),
itemCount: controller.squareImageCount.value,
crossAxisCount: 2,
......@@ -64,8 +54,15 @@ class ImageSquareListView extends StatelessWidget {
},
mainAxisSpacing: 10.0,
crossAxisSpacing: 10.0,
)
),
));
}
@override
Widget build(BuildContext context) {
// TODO: implement build
final controller = Get.find<AIDrawImageController>();
return makeContent();
}
}
\ No newline at end of file
......@@ -45,6 +45,7 @@ Widget makeTabContentView() {
controller: controller.categoryController,
children: controller.imageSquareTitles.asMap().map((index, v) {
final widget = ImageSquareListView();
/*
if (index == 0) {
return MapEntry<int, Widget>(index,
Listener(
......@@ -71,7 +72,7 @@ Widget makeTabContentView() {
child: widget, // 需要处理右滑事件的小部件
)
);
}
}*/
return MapEntry<int, Widget>(index, widget);
}).values.toList() as List<Widget>
),
......
......@@ -362,7 +362,7 @@ import 'controller.dart';
color: AppColor.primary,
borderRadius: BorderRadius.circular(25),
),
child: Text("立即生成(消耗2金币)"),
child: Text("立即生成(消耗2积分)"),
),
),
),
......
......@@ -719,7 +719,7 @@ Widget makeSectionTitleView(String index, String name) {
color: AppColor.primary,
borderRadius: BorderRadius.circular(25),
),
child: const Text("立即生成(消耗2金币)"),
child: const Text("立即生成(消耗2积分)"),
),
),
),
......
......@@ -4,6 +4,7 @@ import 'package:chart/pages/ai-draw-image/text_to_image_view.dart';
import 'package:flutter/material.dart';
import 'package:flutter/src/widgets/framework.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../common/routers/names.dart';
import '../../common/style/color.dart';
......@@ -93,12 +94,13 @@ class AIDrawImagePage extends GetView<AIDrawImageController> {
child: TabBarView(
controller: controller.tabController,
children: [
makeTextToImageView(),
makeImageToImageView(),
Container(
decoration: const BoxDecoration(color: AppColor.black1),
child: makeImageSquareView(),
)
Scrollbar(child: makeTextToImageView()),
Scrollbar(child: makeImageToImageView()),
Scrollbar(child: makeImageSquareView())
// Container(
// decoration: const BoxDecoration(color: AppColor.black1),
// child: makeImageSquareView(),
// )
]
),
);
......@@ -110,14 +112,12 @@ class AIDrawImagePage extends GetView<AIDrawImageController> {
buildCallback: (tabController) {
tabController.addListener(() {
Get.focusScope?.unfocus();
});
controller.tabController = tabController;
tabController.addListener(() {
if (tabController.index == 2 && controller.currentIndex != tabController.index) {
controller.requestSquareImages(false, null);
}
controller.currentIndex = tabController.index;
});
controller.tabController = tabController;
return Column(
children: [
makeTopTabView(),
......
......@@ -2,6 +2,7 @@ import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/entities/scene.dart';
import 'package:chart/common/routers/names.dart';
import 'package:chart/pages/assistant-item/controller.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
......@@ -9,14 +10,19 @@ import 'package:get/get.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../common/utils/loading.dart';
class AssistantController extends GetxController {
AssistantController();
final sceneList = [].obs;
RxBool enablePullDown = true.obs;
RxBool enablePullUp = false.obs;
late RefreshController refreshController =
RefreshController(initialRefresh: false);
late EasyRefreshController refreshController =
EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true
);
onRefresh() async {
try {
......@@ -25,11 +31,11 @@ class AssistantController extends GetxController {
sceneList.clear();
}
sceneList.addAll(res.data!);
refreshController.refreshCompleted();
} catch (e) {
print("网络异常$e");
refreshController.refreshCompleted();
}
refreshController.finishRefresh();
refreshController.resetFooter();
}
_initData() async {
......@@ -39,18 +45,11 @@ class AssistantController extends GetxController {
}
void onTap(item) async {
EasyLoading.show(
status: "加载中",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show();
Vibrate.feedback(FeedbackType.impact);
final res = await UserAPI.createConversion();
EasyLoading.dismiss();
Loading.dismiss();
AssistantItemController.to.state.actId = res;
AssistantItemController.to.state.selectItem = {
......
import 'dart:math';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:chart/common/values/values.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gradient_widgets/gradient_widgets.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../index.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
......@@ -14,23 +14,11 @@ import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
class GridWidget extends GetView<AssistantController> {
@override
Widget build(BuildContext context) {
return Obx(() => SmartRefresher(
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
enablePullDown: controller.enablePullDown.value,
enablePullUp: controller.enablePullUp.value,
return EasyRefresh(
onRefresh: controller.onRefresh,
controller: controller.refreshController,
child: _buildBlankPage(),
));
);
}
Widget _buildBlankPage() {
......
......@@ -2,6 +2,7 @@ import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/entities/convers.dart';
import 'package:chart/common/entities/entities.dart';
import 'package:chart/pages/frame/notfound/index.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
......@@ -11,8 +12,9 @@ class CategoryController extends GetxController {
CategoryController();
/// UI 组件
final RefreshController refreshController = RefreshController(
initialRefresh: true,
final EasyRefreshController refreshController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true
);
/// 响应式成员变量
......@@ -28,9 +30,11 @@ class CategoryController extends GetxController {
void onRefresh() {
fetchNewsList(isRefresh: true).then((_) {
refreshController.refreshCompleted(resetFooterState: true);
refreshController.finishRefresh();
refreshController.resetFooter();
}).catchError((_) {
refreshController.refreshFailed();
refreshController.finishRefresh(IndicatorResult.fail);
refreshController.resetFooter();
});
}
......@@ -44,12 +48,12 @@ class CategoryController extends GetxController {
print("${state.newsList.length}-${total}321321312321321");
if (state.newsList.length < total) {
fetchNewsList().then((_) {
refreshController.loadComplete();
refreshController.finishLoad();
}).catchError((_) {
refreshController.loadFailed();
refreshController.finishLoad(IndicatorResult.fail);
});
} else {
refreshController.loadNoData();
refreshController.finishLoad(IndicatorResult.noMore);
}
}
......
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../index.dart';
......@@ -25,21 +25,10 @@ class _NewsPageListState extends State<NewsPageList>
super.build(context);
return GetX<CategoryController>(
init: controller,
builder: (controller) => SmartRefresher(
enablePullUp: true,
builder: (controller) => EasyRefresh(
controller: controller.refreshController,
onRefresh: controller.onRefresh,
onLoading: controller.onLoading,
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
onLoad: controller.onLoading,
child: CustomScrollView(
slivers: [
SliverPadding(
......
......@@ -14,6 +14,7 @@ import 'package:get/get.dart';
import 'package:highlight/languages/awk.dart';
import '../../../common/db/db_tool.dart';
import '../../common/utils/loading.dart';
import 'index.dart';
class CreationDetailController extends GetxController {
......@@ -74,7 +75,7 @@ class CreationDetailController extends GetxController {
});
hideKeyboard();
EasyLoading.show(status: "AI正在生成中...");
Loading.show();
try {
state.isLoading = true;
final res = await NewsAPI.sendMessageByDetailId(
......@@ -93,9 +94,9 @@ class CreationDetailController extends GetxController {
// state.isLoading = false;
} catch (e) {
state.isLoading = false;
// EasyLoading.dismiss();
// Loading.dismiss();
}
EasyLoading.dismiss();
Loading.dismiss();
}
}
......
......@@ -2,12 +2,14 @@ import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/entities/selectAllEntity.dart';
import 'package:chart/common/routers/names.dart';
import 'package:chart/pages/creation-detail/controller.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../common/utils/loading.dart';
class CreationController extends GetxController {
CreationController();
......@@ -34,25 +36,22 @@ class CreationController extends GetxController {
list.addAll(entity.data!);
}
}
refreshController.refreshCompleted();
refreshController.finishRefresh();
refreshController.resetFooter();
// }
}
final RefreshController refreshController = RefreshController();
final EasyRefreshController refreshController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true
);
void onTap(item) async {
EasyLoading.show(
status: "加载中",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show();
Vibrate.feedback(FeedbackType.impact);
final res = await UserAPI.getDetailParamsByDetailId(item.id);
EasyLoading.dismiss();
Loading.dismiss();
CreationDetailController.to
.updateState('${item.id}', item.detailName, res.data!);
Get.toNamed(AppRoutes.CREATION_PAGE_DETAIL);
......
import 'dart:math';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:chart/common/values/values.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:gradient_widgets/gradient_widgets.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../index.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
......@@ -223,23 +223,11 @@ class GridWidget extends GetView<CreationController> {
// )
],
);
return Obx(() => SmartRefresher(
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
enablePullDown: controller.enablePullDown.value,
enablePullUp: controller.enablePullUp.value,
return EasyRefresh(
onRefresh: controller.onRefresh,
controller: controller.refreshController,
child: customScrollView,
));
);
// return Container(
// alignment: Alignment.center,
......
......@@ -17,6 +17,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
import '../../../common/utils/loading.dart';
import 'index.dart';
class AndroidPayListController extends GetxController {
......@@ -51,15 +52,15 @@ class AndroidPayListController extends GetxController {
try {
await initializedPlugins();
EasyLoading.show(status: "正在获取套餐中...");
Loading.show("正在获取套餐中...");
await _getProduct();
state.loadingList = false;
EasyLoading.dismiss();
Loading.dismiss();
} catch (e) {
state.loadingList = false;
}
// EasyLoading.dismiss();
// Loading.dismiss();
// await initializedPlugins();
// new 对象
// 初始静态数据
......@@ -111,20 +112,20 @@ class AndroidPayListController extends GetxController {
}
Future _getProduct() async {
EasyLoading.show(status: "正在获取套餐中...");
Loading.show("正在获取套餐中...");
try {
List<GoodEntity> goodsList = await NewsAPI.getGoodsList();
final list = goodsList.reversed;
// print(goodsList);
state.items.addAll(list);
EasyLoading.dismiss();
Loading.dismiss();
if (goodsList.isNotEmpty) {
state.setSelectedItem = goodsList.first;
}
} catch (e) {
print(e);
EasyLoading.dismiss();
Loading.dismiss();
}
// try {
// List<IAPItem> items =
......@@ -144,7 +145,7 @@ class AndroidPayListController extends GetxController {
void requestPurchase() async {
Vibrate.feedback(FeedbackType.impact);
// print("${item.productId}");
EasyLoading.show(status: '支付中...');
Loading.show('支付中...');
// List<String> newList = list.where((element) => element.compareTo('b') > 0).toList(); // ['c', 'd']
final actSelected = state.selectedItem;
......@@ -157,7 +158,7 @@ class AndroidPayListController extends GetxController {
AlipayKitPlatform.instance.pay(orderInfo: orderInfo);
EasyLoading.dismiss();
Loading.dismiss();
// actSelected
// selected
......
......@@ -62,10 +62,10 @@
// if (res?.status == 200) {
// await FlutterInappPurchase.instance.clearTransactionIOS();
// EasyLoading.showSuccess('${res?.message}');
// EasyLoading.dismiss();
// Loading.dismiss();
// } else {
// EasyLoading.showError("${res?.message}}");
// EasyLoading.dismiss();
// Loading.dismiss();
// }
// });
......@@ -73,7 +73,7 @@
// FlutterInappPurchase.purchaseError.listen((purchaseError) {
// // print('purchase-error: $purchaseError');
// EasyLoading.showError('支付订单失败');
// EasyLoading.dismiss();
// Loading.dismiss();
// });
// }
......
......@@ -18,6 +18,7 @@ import 'package:get/get.dart';
import 'package:share_plus/share_plus.dart';
import 'package:uuid/uuid.dart';
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
import '../../../common/utils/loading.dart';
import 'index.dart';
import 'package:eventsource/eventsource.dart';
import 'dart:convert';
......@@ -105,7 +106,7 @@ class ChatNewController extends GetxController {
// "eventSource.isPausedeventSource.isPausedeventSource.isPaused---------------${eventSource.isPaused}");
if (result == 200) {
EasyLoading.dismiss();
Loading.dismiss();
Vibrate.feedback(FeedbackType.success);
UserAPI.getUserInfo().then((value) async {
await UserStore.to.saveProfile(IntegralEntity(
......@@ -126,7 +127,7 @@ class ChatNewController extends GetxController {
// index.value = state.messageList.length;
} else {
EasyLoading.showError("网络异常");
EasyLoading.dismiss();
Loading.dismiss();
state.isLoading = false;
}
} else {
......@@ -138,7 +139,7 @@ class ChatNewController extends GetxController {
);
state.isLoading = false;
_addMessage(receiveErrorMessage);
EasyLoading.dismiss();
Loading.dismiss();
Vibrate.feedback(FeedbackType.error);
Get.toNamed(AppRoutes.SIGN_IN);
}
......@@ -154,7 +155,7 @@ class ChatNewController extends GetxController {
);
_addMessage(receiveErrorMessage);
EasyLoading.dismiss();
Loading.dismiss();
Vibrate.feedback(FeedbackType.error);
}
}
......
......@@ -12,6 +12,7 @@ import 'package:flutter_inapp_purchase/modules.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:get/get.dart';
import '../../../common/utils/loading.dart';
import 'index.dart';
class PayListController extends GetxController {
......@@ -65,11 +66,11 @@ class PayListController extends GetxController {
super.onInit();
try {
await initializedPlugins();
EasyLoading.show(status: "正在获取套餐中...");
Loading.show("正在获取套餐中...");
state.loadingList = true;
await _getProduct();
state.loadingList = false;
EasyLoading.dismiss();
Loading.dismiss();
} catch (e) {
state.loadingList = false;
}
......@@ -153,7 +154,7 @@ class PayListController extends GetxController {
void restorePurchases() async {
Vibrate.feedback(FeedbackType.selection);
EasyLoading.show(status: '恢复购买中...');
Loading.show('恢复购买中...');
List<PurchasedItem>? purchases =
await FlutterInappPurchase.instance.getAvailablePurchases();
......@@ -167,7 +168,7 @@ class PayListController extends GetxController {
EasyLoading.showSuccess("恢复购买成功");
} else {
EasyLoading.showInfo("没有查询到购买订单");
EasyLoading.dismiss();
Loading.dismiss();
}
// print("${item.productId}");
......
......@@ -9,6 +9,7 @@ import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart';
import '../../../../common/apis/apis.dart';
import '../../../../common/utils/loading.dart';
import '../index.dart';
class PayItemWidget extends StatefulWidget {
......@@ -62,10 +63,10 @@ class GoodsPageState extends State<PayItemWidget> {
if (res?.status == 200) {
await FlutterInappPurchase.instance.clearTransactionIOS();
EasyLoading.showSuccess('${res?.message}');
EasyLoading.dismiss();
Loading.dismiss();
} else {
EasyLoading.showError("${res?.message}}");
EasyLoading.dismiss();
Loading.dismiss();
}
});
......@@ -73,7 +74,7 @@ class GoodsPageState extends State<PayItemWidget> {
FlutterInappPurchase.purchaseError.listen((purchaseError) {
// print('purchase-error: $purchaseError');
EasyLoading.showError('支付订单失败');
EasyLoading.dismiss();
Loading.dismiss();
});
}
......@@ -182,7 +183,7 @@ class GoodsPageState extends State<PayItemWidget> {
ElevatedButton(
// color: Colors.orange,
onPressed: () {
EasyLoading.show(status: '提交订单中...');
Loading.show('提交订单中...');
c.requestPurchase();
// c()
},
......
......@@ -15,6 +15,7 @@ import 'package:get/get_connect/http/src/utils/utils.dart';
import 'package:share_plus/share_plus.dart';
import 'package:get/get.dart';
import '../../../common/utils/loading.dart';
import 'index.dart';
class ProductController extends GetxController {
......@@ -73,7 +74,7 @@ class ProductController extends GetxController {
header: {}).listen((event) {
try {
if (EasyLoading.isShow) {
EasyLoading.dismiss();
Loading.dismiss();
}
if (event.id == "[DONE]") {
state.isLoading = false;
......@@ -83,7 +84,7 @@ class ProductController extends GetxController {
Map<String, dynamic> jsonMap = jsonDecode(event.data as String);
state.inderText = state.inderText + jsonMap['content'];
} catch (e) {
EasyLoading.dismiss();
Loading.dismiss();
}
//
});
......@@ -148,9 +149,9 @@ class ProductController extends GetxController {
"sort": 2,
}
], params['detailId']!);
EasyLoading.show(status: "AI正在生成中...");
Loading.show();
if (result == 200) {
// EasyLoading.dismiss();
// Loading.dismiss();
UserAPI.getUserInfo().then((value) async {
await UserStore.to.saveProfile(IntegralEntity(
id: UserStore.to.profile.id,
......@@ -160,7 +161,7 @@ class ProductController extends GetxController {
integral: value.integral));
});
} else {
EasyLoading.dismiss();
Loading.dismiss();
state.isLoading = false;
}
......@@ -178,10 +179,10 @@ class ProductController extends GetxController {
state.loading = false;
// Get.snackbar("错误提示", "您的问题还没有填完", colorText: Colors.white);
}
// EasyLoading.dismiss();
// Loading.dismiss();
} catch (e) {
state.loading = false;
// EasyLoading.dismiss();
// Loading.dismiss();
}
print("$str");
......@@ -231,7 +232,7 @@ class ProductController extends GetxController {
String str = a + '\n\n' + "继续";
state.loading = true;
EasyLoading.show(status: "AI正在生成中...");
Loading.show();
String result = await NewsAPI.sendMessage(
{"question": str, "id": "${UserStore.to.profile.id}"});
state.loading = false;
......@@ -239,12 +240,12 @@ class ProductController extends GetxController {
state.messageQueenItemQueen.forEach((element) {
element.isFinish = false;
});
EasyLoading.dismiss();
Loading.dismiss();
state.messageQueenItemQueen.add(
MessageQueenItem(text: result, isFinish: false, isWhiteIng: true));
} catch (e) {
EasyLoading.showError("网络异常");
EasyLoading.dismiss();
Loading.dismiss();
state.loading = false;
state.isWhite = false;
}
......
......@@ -88,7 +88,7 @@ class SignInController extends GetxController {
return;
}
EasyLoading.show(status: '登录中...');
Loading.show();
// Map<String, dynamic> routeParams =
// ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>;
// final DateTime expireTime;
......@@ -102,7 +102,7 @@ class SignInController extends GetxController {
Vibrate.feedback(FeedbackType.success);
EasyLoading.showSuccess("登录成功");
EasyLoading.dismiss();
Loading.dismiss();
UserStore.to.handleLogin(IntegralEntity(
id: res.id,
username: res.username,
......@@ -114,7 +114,7 @@ class SignInController extends GetxController {
} catch (e) {
Vibrate.feedback(FeedbackType.error);
EasyLoading.showError("登录失败");
EasyLoading.dismiss();
Loading.dismiss();
}
// try {
// LoginEntity? res = await UserAPI.login({
......@@ -130,10 +130,10 @@ class SignInController extends GetxController {
// } else {
// EasyLoading.showError("登录失败");
// }
// EasyLoading.dismiss();
// Loading.dismiss();
// } catch (e) {
// EasyLoading.showError("登录失败");
// EasyLoading.dismiss();
// Loading.dismiss();
// }
// UserLoginRequestEntity params = UserLoginRequestEntity(
......@@ -158,7 +158,7 @@ class SignInController extends GetxController {
}
handleTouristsLogin() async {
EasyLoading.show(status: '登录中...');
Loading.show();
// Map<String, dynamic> routeParams =
// ModalRoute.of(context)!.settings?.arguments as Map<String, dynamic>;
// final DateTime expireTime;
......@@ -178,7 +178,7 @@ class SignInController extends GetxController {
Vibrate.feedback(FeedbackType.success);
EasyLoading.showSuccess("登录成功");
EasyLoading.dismiss();
Loading.dismiss();
UserStore.to.handleLogin(IntegralEntity(
id: res.id,
username: res.username,
......@@ -190,7 +190,7 @@ class SignInController extends GetxController {
} catch (e) {
Vibrate.feedback(FeedbackType.error);
EasyLoading.showError("登录失败");
EasyLoading.dismiss();
Loading.dismiss();
}
}
......@@ -254,7 +254,7 @@ class SignInController extends GetxController {
// if (codeEnable.value == false) {
// EasyLoading.show(status: "验证码发送太过频繁,请稍后再试");
// EasyLoading.dismiss();
// Loading.dismiss();
// return;
// }
// if (codeEnable.value) {
......@@ -263,7 +263,7 @@ class SignInController extends GetxController {
// smsLoading.value = true;
// MsmEntity? res =
// await UserAPI.sendSms({"phone": mobileMemberController.text});
// EasyLoading.dismiss();
// Loading.dismiss();
// if (res.status == 200) {
// EasyLoading.showToast('验证码发送成功,请注意查收');
......@@ -326,7 +326,7 @@ class SignInController extends GetxController {
AppleIDAuthorizationScopes.fullName,
],
);
EasyLoading.show(status: "登录中...");
Loading.show();
LoginEntity res = await UserAPI.appLogin({
"authorizationCode": credential?.authorizationCode,
"email": credential?.email,
......@@ -340,7 +340,7 @@ class SignInController extends GetxController {
Vibrate.feedback(FeedbackType.success);
EasyLoading.showSuccess("登录成功");
EasyLoading.dismiss();
Loading.dismiss();
UserStore.to.handleLogin(IntegralEntity(
id: res.id,
username: res.username,
......@@ -352,7 +352,7 @@ class SignInController extends GetxController {
} catch (e) {
Vibrate.feedback(FeedbackType.error);
EasyLoading.showError("登录失败");
EasyLoading.dismiss();
Loading.dismiss();
}
;
}
......
......@@ -23,6 +23,7 @@ import 'package:highlight/languages/awk.dart';
import 'package:share_plus/share_plus.dart';
import 'package:uuid/uuid.dart';
import 'package:flutter_chat_types/flutter_chat_types.dart' as types;
import '../../common/utils/loading.dart';
import '../../common/widgets/wx_share.dart';
import 'index.dart';
import 'package:eventsource/eventsource.dart';
......@@ -195,7 +196,7 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
// "eventSource.isPausedeventSource.isPausedeventSource.isPaused---------------${eventSource.isPaused}");
if (result == 200) {
EasyLoading.dismiss();
Loading.dismiss();
Vibrate.feedback(FeedbackType.success);
UserAPI.getUserInfo().then((value) async {
await UserStore.to.saveProfile(IntegralEntity(
......@@ -209,7 +210,7 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
// index.value = state.messageList.length;
} else {
// EasyLoading.showError("网络异常");
EasyLoading.dismiss();
Loading.dismiss();
state.isLoading = false;
}
} else {
......@@ -221,7 +222,7 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
);
state.isLoading = false;
_addMessage(receiveErrorMessage);
EasyLoading.dismiss();
Loading.dismiss();
Vibrate.feedback(FeedbackType.error);
Get.toNamed(AppRoutes.SIGN_IN);
}
......@@ -239,7 +240,7 @@ class HomeController extends GetxController with SingleGetTickerProviderMixin {
// _addMessage(receiveErrorMessage);
_updateMessage("网络错误,请重试!");
EasyLoading.dismiss();
Loading.dismiss();
Vibrate.feedback(FeedbackType.error);
}
}
......
......@@ -3,15 +3,15 @@ import 'dart:io';
import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/store/user.dart';
import 'package:chart/common/utils/loading.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:get/get.dart';
import 'package:highlight/languages/awk.dart';
import 'package:intl/intl.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:share_plus/share_plus.dart';
import 'package:in_app_review/in_app_review.dart';
......@@ -21,7 +21,10 @@ import '../ai-draw-image/model.dart';
import 'models.dart';
class MyWorkController extends GetxController {
late var refreshController = RefreshController();
late var refreshController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true
);
var models = AIDrawTextToImageModel();
var collectImages = Rx<List<MyCollectData>>([]);
var workImages = Rx<List<MyWorkData>>([]);
......@@ -56,7 +59,7 @@ class MyWorkController extends GetxController {
if (index >= 0 && index < collectImages.value.length) {
final item = collectImages.value[index];
final conversionId = await UserAPI.createConversion();
EasyLoading.dismiss();
Loading.dismiss();
if (conversionId == 401) {
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -66,12 +69,13 @@ class MyWorkController extends GetxController {
"opearter": OpearterType.imageResult,
"conversionId": conversionId,
"imageUrls": [item.imgUrl ?? ""],
"enText": "",
"text": "",
"enText": item.prompt ?? "",
"text": item.prompt ?? "",
"ratio": "16:9",
"s": "",
"styleName": "--v 5.2",
"messageId": ""
"messageId": "",
"didCollected": true
});
}
}
......@@ -81,7 +85,7 @@ class MyWorkController extends GetxController {
if (index >= 0 && index < workImages.value.length) {
final item = workImages.value[index];
final conversionId = await UserAPI.createConversion();
EasyLoading.dismiss();
Loading.dismiss();
if (conversionId == 401) {
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
......@@ -96,30 +100,49 @@ class MyWorkController extends GetxController {
"ratio": "16:9",
"s": "",
"styleName": item.style ?? "--v 5.2",
"messageId": item.messageId ?? ""
"messageId": item.messageId ?? "",
"didCollected": item.isCancel == 1
});
}
}
}
onDeleteWork(int index) async {
if (index >= 0 && index < workImages.value.length) {
final item = workImages.value[index];
Loading.show();
final res = await NewsAPI.deleteMyWorkImage(item.id ?? 0);
Loading.dismiss();
if (res.status == 401) {
EasyLoading.showInfo('您还为登录,请登录后体验功能。');
Get.toNamed(AppRoutes.SIGN_IN);
} else {
if (res.status == 200) {
EasyLoading.showSuccess('删除成功');
requestMyWorkImages(false);
} else {
EasyLoading.showInfo(res.message ?? "删除失败");
}
}
}
}
requestMyWorkImages(bool ismore) async {
if (!ismore) {
EasyLoading.show(
status: "正在加载我的作品",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
Loading.show();
}
final res = await UserAPI.getMyWorkImages(page);
if (ismore) {
refreshController.loadComplete();
if (res.data?.isEmpty ?? true) {
refreshController.finishLoad(IndicatorResult.noMore);
} else {
refreshController.finishLoad(IndicatorResult.success);
}
} else {
refreshController.refreshCompleted();
refreshController.finishRefresh();
refreshController.resetFooter();
}
EasyLoading.dismiss();
Loading.dismiss();
if (res.status == 200) {
if (ismore) {
var array = workImages.value;
......@@ -136,18 +159,21 @@ class MyWorkController extends GetxController {
requestMyCollectImages(bool ismore) async {
if (!ismore) {
EasyLoading.show(
status: "正在加载我的收藏",
dismissOnTap: false,
maskType: EasyLoadingMaskType.none,
indicator: LoadingAnimationWidget.staggeredDotsWave(
color: Colors.white,
size: 30,
));
// Loading.show();
EasyLoading.show(status: "我是吴海超450294095-340950349-25");
}
final res = await UserAPI.getMyCollectImages(page);
refreshController.refreshCompleted();
EasyLoading.dismiss();
if (ismore) {
if (res.data?.isEmpty ?? true) {
refreshController.finishLoad(IndicatorResult.noMore);
} else {
refreshController.finishLoad(IndicatorResult.success);
}
} else {
refreshController.finishRefresh();
refreshController.resetFooter();
}
Loading.dismiss();
if (res.status == 200) {
if (ismore) {
var array = collectImages.value;
......
......@@ -37,10 +37,12 @@ class MyWorkData {
String? minioUrl;
String? createTime;
String? style;
int? isCancel;
int? showSquare;
MyWorkData(
{this.id,
this.isCancel,
this.userId,
this.content,
this.imageUrl,
......@@ -60,6 +62,7 @@ class MyWorkData {
createTime = json['createTime'];
style = json['style'];
showSquare = json['showSquare'];
isCancel = json['isCancel'];
}
Map<String, dynamic> toJson() {
......@@ -73,6 +76,7 @@ class MyWorkData {
data['createTime'] = this.createTime;
data['style'] = this.style;
data['showSquare'] = this.showSquare;
data['isCancel'] = isCancel;
return data;
}
}
......
......@@ -3,11 +3,11 @@
import 'package:cached_network_image/cached_network_image.dart';
import 'package:chart/common/routers/routes.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_easyrefresh/easy_refresh.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import '../../common/style/color.dart';
import './controller.dart';
......@@ -17,52 +17,83 @@ class MyWorkPage extends GetView<MyWorkController> {
Widget makeMyWorkListView() {
final controller = Get.find<MyWorkController>();
return Obx(() => SmartRefresher(
enablePullUp: true,
enablePullDown: true,
return Obx(() => EasyRefresh(
controller: controller.refreshController,
onRefresh: controller.onPullRefresh,
onLoading: controller.onLoadMore,
header: const ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"
),
footer: const ClassicFooter(
loadingText: "正在加载中...",
noDataText: '没有更多数据啦'
),
onLoad: controller.onLoadMore,
child: MasonryGridView.count(
itemCount: controller.workImageCount.value,
crossAxisCount: 2,
itemBuilder: (BuildContext context, int index) {
return InkWell(
onTap: () {
controller.onClickWorkImage(index);
},
child: ClipRRect(
borderRadius: BorderRadius.circular(10),
child: CachedNetworkImage(
fit: BoxFit.cover,
height: index % 2 == 0 ? 260 : 200,
memCacheHeight: index % 2 == 0 ? 260 * 2 : 200 * 2,
maxHeightDiskCache: index % 2 == 0 ? 260 * 2 : 200 * 2,
imageUrl: controller.workImages.value[index].minioUrl ?? "",
placeholder: (context, url) => Container(
alignment: Alignment.center,
child: const SizedBox(
width: 30,
height: 30,
child: CircularProgressIndicator(),
),
),
errorWidget: (context, url, error) => Container(
alignment: Alignment.center,
child: Text(error.toString()),
),
return Stack(
children: [
InkWell(
highlightColor: Colors.transparent,
splashColor: Colors.transparent,
onTap: () {
controller.onClickWorkImage(index);
},
child: Stack(
children: [
ClipRRect(
borderRadius: BorderRadius.circular(10),
child: CachedNetworkImage(
fit: BoxFit.cover,
height: index % 2 == 0 ? 260 : 200,
width: (Get.width - 20) / 2.0,
memCacheHeight: index % 2 == 0 ? 260 * 2 : 200 * 2,
maxHeightDiskCache: index % 2 == 0 ? 260 * 2 : 200 * 2,
imageUrl: controller.workImages.value[index].minioUrl ?? "",
placeholder: (context, url) => Container(
alignment: Alignment.center,
child: const SizedBox(
width: 30,
height: 30,
child: CircularProgressIndicator(),
),
),
errorWidget: (context, url, error) => Container(
alignment: Alignment.center,
child: Text(error.toString()),
),
)
),
],
)
),
Positioned(
right: 10,
top: 5,
child: InkWell(
onTap: () {
showDialog(
context: context,
builder: (BuildContext context) {
return CupertinoAlertDialog(
title: const Text('确定要删除吗?'),
actions: <Widget>[
CupertinoDialogAction(
child: const Text('取消'),
onPressed: () {
Navigator.pop(context); // 关闭弹窗
},
),
CupertinoDialogAction(
child: const Text('确定'),
onPressed: () {
controller.onDeleteWork(index);
Navigator.pop(context); // 关闭弹窗
},
),
],
);
},
);
},
child: Image.asset("assets/images/清空图片.png", width: 30, height: 30,),
)
)
),
],
);
},
mainAxisSpacing: 10.0,
......@@ -74,26 +105,17 @@ class MyWorkPage extends GetView<MyWorkController> {
Widget makeMyCollectListView() {
// TODO: implement build
final controller = Get.find<MyWorkController>();
return Obx(() => SmartRefresher(
enablePullUp: true,
return Obx(() => EasyRefresh(
controller: controller.refreshController,
onRefresh: controller.onPullRefresh,
onLoading: controller.onLoadMore,
header: const ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"
),
footer: const ClassicFooter(
loadingText: "正在加载中...",
noDataText: '没有更多数据啦'
),
onLoad: controller.onLoadMore,
child: MasonryGridView.count(
itemCount: controller.collectImageCount.value,
crossAxisCount: 2,
itemBuilder: (BuildContext context, int index) {
return InkWell(
highlightColor: Colors.transparent,
splashColor: Colors.transparent,
onTap: () {
controller.onClickCollectImage(index);
},
......
......@@ -56,7 +56,7 @@ class MyPage extends GetView<MyController> {
children: const [
Image(image: AssetImage("assets/images/jifen1.png", ), width: 20, height: 20,),
SizedBox(width: 5),
Text("金币充值"),
Text("积分充值"),
],
),
),
......
import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/entities/entities.dart';
import 'package:easy_refresh/easy_refresh.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
......@@ -9,8 +10,9 @@ class UserDetailController extends GetxController {
UserDetailController();
/// UI 组件
final RefreshController refreshController = RefreshController(
initialRefresh: true,
final EasyRefreshController refreshController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true
);
/// 响应式成员变量
......@@ -26,21 +28,23 @@ class UserDetailController extends GetxController {
void onRefresh() {
fetchNewsList(isRefresh: true).then((_) {
refreshController.refreshCompleted(resetFooterState: true);
refreshController.finishRefresh();
refreshController.resetFooter();
}).catchError((_) {
refreshController.refreshFailed();
refreshController.finishRefresh(IndicatorResult.fail);
refreshController.resetFooter();
});
}
void onLoading() {
if (state.newsList.length < total) {
fetchNewsList().then((_) {
refreshController.loadComplete();
refreshController.finishLoad();
}).catchError((_) {
refreshController.loadFailed();
refreshController.finishLoad(IndicatorResult.fail);
});
} else {
refreshController.loadNoData();
refreshController.finishLoad(IndicatorResult.noMore);
}
}
......
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
......@@ -25,21 +26,10 @@ class _NewsPageListState extends State<NewsPageList>
super.build(context);
return GetX<UserDetailController>(
init: controller,
builder: (controller) => SmartRefresher(
header: ClassicHeader(
releaseText: "松开刷新",
refreshingText: "刷新数据中",
completeText: "刷新数据成功",
idleText: "下拉刷新"),
footer: ClassicFooter(
loadingText: "正在加载中...",
// loadStyle: LoadStyle.ShowWhenLoading,
// completeDuration: Duration(milliseconds: 500),
noDataText: '没有更多数据啦'),
enablePullUp: true,
builder: (controller) => EasyRefresh(
controller: controller.refreshController,
onRefresh: controller.onRefresh,
onLoading: controller.onLoading,
onLoad: controller.onLoading,
child: CustomScrollView(
slivers: [
SliverPadding(
......
......@@ -353,6 +353,14 @@ packages:
url: "https://pub.flutter-io.cn"
source: hosted
version: "1.0.4+1"
easy_refresh:
dependency: "direct main"
description:
name: easy_refresh
sha256: "77b025ea49f27b5ebc5eef40a6678be52564c293bd97ce91a4088d6646478329"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.3.2+1"
equatable:
dependency: transitive
description:
......@@ -535,7 +543,7 @@ packages:
source: hosted
version: "3.0.5"
flutter_easyrefresh:
dependency: "direct main"
dependency: transitive
description:
name: flutter_easyrefresh
sha256: "5d161ee5dcac34da9065116568147d742dd25fb9bff3b10024d9054b195087ad"
......
......@@ -53,7 +53,6 @@ dependencies:
provider: ^6.0.3
flutter_screenutil: ^5.5.3+2
flutter_login: ^3.2.0
flutter_easyrefresh: ^2.1.8
intl: ^0.17.0
flutter_tags: "^0.4.9+1"
path_provider: ^2.0.10
......@@ -134,6 +133,7 @@ dependencies:
flutter_native_splash: ^2.2.19
image_gallery_saver: '^2.0.2'
in_app_review: ^2.0.6
easy_refresh: ^3.3.2+1
# package:bubble/bubble.dart
dev_dependencies:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment