Commit fa129e94 authored by 关振斌's avatar 关振斌

update

parent 992c2f82
import 'package:chart/common/entities/classFyDetail.dart'; import 'package:chart/common/entities/classFyDetail.dart';
import 'package:chart/common/entities/convers.dart';
import 'package:chart/common/entities/entities.dart'; import 'package:chart/common/entities/entities.dart';
import 'package:chart/common/entities/good.dart'; import 'package:chart/common/entities/good.dart';
import 'package:chart/common/utils/utils.dart'; import 'package:chart/common/utils/utils.dart';
...@@ -11,10 +12,11 @@ import '../../entity/square_entity.dart'; ...@@ -11,10 +12,11 @@ import '../../entity/square_entity.dart';
class NewsAPI { class NewsAPI {
/// 翻页 /// 翻页
/// refresh 是否刷新 /// refresh 是否刷新
static Future<NewsPageListResponseEntity> newsPageList( static Future<NewsPageListResponseEntity> getConversionByUserId(
Map<String, int> params) async { Map<String, int> params) async {
var response = await HttpUtil().get( var response = await HttpUtil().get(
'/searchRecord/getSearchRecord/${params['page']}/${params['size']}', // /api/openAi/getConversionByUserId
'/openAi/getConversionByUserId/${params['page']}/${params['size']}',
); );
return NewsPageListResponseEntity.fromJson(response['data']); return NewsPageListResponseEntity.fromJson(response['data']);
// searchRecordEntityFromList(response.data); // searchRecordEntityFromList(response.data);
...@@ -25,6 +27,20 @@ class NewsAPI { ...@@ -25,6 +27,20 @@ class NewsAPI {
return response['data']; return response['data'];
} }
static Future<dynamic> getConversionById(int conversionId) async {
var response = await HttpUtil().get(
'/openAi/getConversionById/${conversionId}',
);
return response['data']
.map(((item) => ConversEntity.fromJson(item)))
.toList();
// response
// .map<ChannelResponseEntity>(
// (item) => ChannelResponseEntity.fromJson(item))
// .toList()
}
static Future<int> aiAnswerWithStream(Map<String, String> params) async { static Future<int> aiAnswerWithStream(Map<String, String> params) async {
var response = var response =
await HttpUtil().post('/openAi/aiAnswerWithStream', data: params); await HttpUtil().post('/openAi/aiAnswerWithStream', data: params);
......
...@@ -47,6 +47,48 @@ class UserAPI { ...@@ -47,6 +47,48 @@ class UserAPI {
// UserLoginResponseEntity.fromJson(response); // UserLoginResponseEntity.fromJson(response);
} }
//创建会话
static Future<int> createConversion() async {
var response = await HttpUtil().get(
'/openAi/createConversion',
);
return response['data'];
}
static Future<int> endConversion(Map<String, dynamic> parameters) async {
var response = await HttpUtil().get(
'/openAi/endConversion?conversionId=${parameters['conversionId']}',
);
return response['status'];
}
//对话
static Future<int> aiAnswerWithConversion(
Map<String, dynamic> parameters) async {
var response = await HttpUtil().post(
'/openAi/aiAnswerWithConversion',
data: parameters,
);
return response['status'];
// return ApplePayEntity.fromMap(response['data']);
}
///api/ 保存问题
static Future<int> saveResp(Map<String, dynamic> parameters) async {
var response = await HttpUtil().post(
'/openAi/saveResp',
data: parameters,
);
return response['status'];
// return ApplePayEntity.fromMap(response['data']);
}
// /api/
// openAi/createConversion
static Future<UserInfoEntity> getUserInfo() async { static Future<UserInfoEntity> getUserInfo() async {
var response = await HttpUtil().get( var response = await HttpUtil().get(
'/user/info', '/user/info',
......
class ConversEntity {
int? id;
String? sendTime;
String? role;
String? content;
int? conversionId;
ConversEntity(
{this.id, this.sendTime, this.role, this.content, this.conversionId});
ConversEntity.fromJson(Map<String, dynamic> json) {
id = json['id'];
sendTime = json['sendTime'];
role = json['role'];
content = json['content'];
conversionId = json['conversionId'];
}
Map<String, dynamic> toJson() {
final Map<String, dynamic> data = new Map<String, dynamic>();
data['id'] = this.id;
data['sendTime'] = this.sendTime;
data['role'] = this.role;
data['content'] = this.content;
data['conversionId'] = this.conversionId;
return data;
}
}
...@@ -69,6 +69,7 @@ class NewsItem { ...@@ -69,6 +69,7 @@ class NewsItem {
int? id; int? id;
String? question; String? question;
String? answer; String? answer;
String? name;
String? thumbnail; String? thumbnail;
int? likes; int? likes;
int? forward; int? forward;
...@@ -78,6 +79,7 @@ class NewsItem { ...@@ -78,6 +79,7 @@ class NewsItem {
this.id, this.id,
this.question, this.question,
this.answer, this.answer,
this.name,
this.thumbnail, this.thumbnail,
this.likes, this.likes,
this.forward, this.forward,
...@@ -91,6 +93,7 @@ class NewsItem { ...@@ -91,6 +93,7 @@ class NewsItem {
thumbnail: json["thumbnail"], thumbnail: json["thumbnail"],
likes: json["likes"], likes: json["likes"],
forward: json["forward"], forward: json["forward"],
name: json['name'],
// DateTime.parse(), // DateTime.parse(),
createTime: DateTime.parse(json["createTime"]), createTime: DateTime.parse(json["createTime"]),
); );
...@@ -100,6 +103,7 @@ class NewsItem { ...@@ -100,6 +103,7 @@ class NewsItem {
"question": question, "question": question,
"answer": answer, "answer": answer,
"thumbnail": thumbnail, "thumbnail": thumbnail,
"name": name,
"likes": likes, "likes": likes,
"forward": forward, "forward": forward,
"createTime": createTime?.toIso8601String(), "createTime": createTime?.toIso8601String(),
......
...@@ -123,7 +123,7 @@ class HttpUtil { ...@@ -123,7 +123,7 @@ class HttpUtil {
EasyLoading.showError(eInfo.message); EasyLoading.showError(eInfo.message);
break; break;
default: default:
EasyLoading.showError('未知错误'); EasyLoading.showError('网络异常');
break; break;
} }
} }
...@@ -179,7 +179,7 @@ class HttpUtil { ...@@ -179,7 +179,7 @@ class HttpUtil {
} }
} }
} on Exception catch (_) { } on Exception catch (_) {
return ErrorEntity(code: -1, message: "未知错误"); return ErrorEntity(code: -1, message: "网络异常");
} }
} }
default: default:
......
// baidu yapi // baidu yapi
// const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008'; // const SERVER_API_URL = 'https://yapi.baidu.com/mock/41008';
// const SERVER_API_URL = 'http://192.168.110.127:8083/api'; // const SERVER_API_URL = 'http://192.168.110.127:8083/api';
// 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.2.178:8083/api';//线上
const SERVER_API_URL = "http://192.168.120.108:8083/api"; //http://192.168.2.178:8083/api/doc.html
// const SERVER_API_URL = "http://192.168.120.108:8083/api";
// http://192.168.110.127:8083/api/doc.html // http://192.168.110.127:8083/api/doc.html
// http://192.168.110.66:8083/api/doc.html // http://192.168.110.66:8083/api/doc.html
// const SERVER_API_URL = 'http://192.168.110.66:8083/api'; // const SERVER_API_URL = 'http://192.168.110.66:8083/api';
......
import 'dart:async'; import 'dart:async';
// import 'package:vibration/vibration.dart'; // import 'package:vibration/vibration.dart';
import 'package:chart/pages/frame/notfound/index.dart';
import 'package:flutter_vibrate/flutter_vibrate.dart'; import 'package:flutter_vibrate/flutter_vibrate.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -108,8 +109,9 @@ class ApplicationController extends GetxController { ...@@ -108,8 +109,9 @@ class ApplicationController extends GetxController {
// 跳转 注册界面 // 跳转 注册界面
handleChat() async { handleChat() async {
Vibrate.feedback(FeedbackType.impact); await ChatNewController.to.createConversionId();
Get.toNamed(AppRoutes.CHAT_PAGE); // Vibrate.feedback(FeedbackType.impact);
// Get.toNamed(AppRoutes.CHAT_PAGE);
// await ConfigStore.to.saveAlreadyOpen(); // await ConfigStore.to.saveAlreadyOpen();
// Get.offAndToNamed(AppRoutes.CHAT_PAGE); // Get.offAndToNamed(AppRoutes.CHAT_PAGE);
} }
...@@ -124,7 +126,7 @@ class ApplicationController extends GetxController { ...@@ -124,7 +126,7 @@ class ApplicationController extends GetxController {
// handleIncomingLinks(); // handleIncomingLinks();
// 准备一些静态数据 // 准备一些静态数据
tabTitles = ['首页', '信息广场', '个人中心']; tabTitles = ['首页', '我的聊天', '个人中心'];
bottomTabs = <BottomNavigationBarItem>[ bottomTabs = <BottomNavigationBarItem>[
new BottomNavigationBarItem( new BottomNavigationBarItem(
icon: Icon( icon: Icon(
...@@ -147,7 +149,7 @@ class ApplicationController extends GetxController { ...@@ -147,7 +149,7 @@ class ApplicationController extends GetxController {
Iconfont.grid, Iconfont.grid,
color: AppColors.secondaryElementText, color: AppColors.secondaryElementText,
), ),
label: '信息广场', label: '我的聊天',
backgroundColor: AppColors.primaryBackground, backgroundColor: AppColors.primaryBackground,
), ),
// new BottomNavigationBarItem( // new BottomNavigationBarItem(
......
import 'package:chart/common/apis/apis.dart'; import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/entities/convers.dart';
import 'package:chart/common/entities/entities.dart'; import 'package:chart/common/entities/entities.dart';
import 'package:chart/pages/frame/notfound/index.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart'; import 'package:pull_to_refresh/pull_to_refresh.dart';
...@@ -32,6 +34,12 @@ class CategoryController extends GetxController { ...@@ -32,6 +34,12 @@ class CategoryController extends GetxController {
}); });
} }
getMessageList(dynamic id) async {
final res = await NewsAPI.getConversionById(id);
ChatNewController.to.getMessageList(res, id);
}
void onLoading() { void onLoading() {
if (state.newsList.length < total) { if (state.newsList.length < total) {
fetchNewsList().then((_) { fetchNewsList().then((_) {
...@@ -48,8 +56,9 @@ class CategoryController extends GetxController { ...@@ -48,8 +56,9 @@ class CategoryController extends GetxController {
// 拉取数据 // 拉取数据
Future<void> fetchNewsList({bool isRefresh = false}) async { Future<void> fetchNewsList({bool isRefresh = false}) async {
var result = //
await NewsAPI.newsPageList({'page': curPage, "size": pageSize}); var result = await NewsAPI.getConversionByUserId(
{'page': curPage, "size": pageSize});
if (isRefresh == true) { if (isRefresh == true) {
curPage = 1; curPage = 1;
......
// import 'package:chart/utils/common_util.dart'; // import 'package:chart/utils/common_util.dart';
import 'package:chart/pages/category/index.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:chart/common/entities/entities.dart'; import 'package:chart/common/entities/entities.dart';
import 'package:chart/common/utils/utils.dart'; import 'package:chart/common/utils/utils.dart';
import 'package:chart/common/values/values.dart'; import 'package:chart/common/values/values.dart';
import 'package:chart/common/widgets/widgets.dart'; import 'package:chart/common/widgets/widgets.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:glassmorphism/glassmorphism.dart'; import 'package:glassmorphism/glassmorphism.dart';
// Widget newsListItem(NewsItem item) { // Widget newsListItem(NewsItem item) {
...@@ -143,70 +145,81 @@ import 'package:glassmorphism/glassmorphism.dart'; ...@@ -143,70 +145,81 @@ import 'package:glassmorphism/glassmorphism.dart';
// } // }
Widget newsListItem(NewsItem item) { Widget newsListItem(NewsItem item) {
final c = Get.find<CategoryController>();
// getConversionById
// double textScaleFactor = MediaQuery.textScaleFactorOf(context); // double textScaleFactor = MediaQuery.textScaleFactorOf(context);
return GlassmorphicContainer( return InkWell(
height: 220, onTap: () {
width: double.infinity, c.getMessageList(item.id);
// flex: 1, },
borderRadius: 16, child: GlassmorphicContainer(
padding: EdgeInsets.only(bottom: 16), height: 66,
blur: 14, width: double.infinity,
alignment: Alignment.bottomCenter, // flex: 1,
border: 2, borderRadius: 16,
linearGradient: LinearGradient( // padding: EdgeInsets.only(bottom: 16),
begin: Alignment.topLeft, blur: 14,
end: Alignment.bottomRight, alignment: Alignment.bottomCenter,
colors: [ border: 2,
Color(0xFF0FFFF).withOpacity(0.2), linearGradient: LinearGradient(
Color(0xFF0FFFF).withOpacity(0.2), begin: Alignment.topLeft,
], end: Alignment.bottomRight,
), colors: [
margin: EdgeInsets.only(bottom: 16.h), Color(0xFF0FFFF).withOpacity(0.2),
borderGradient: LinearGradient( Color(0xFF0FFFF).withOpacity(0.2),
begin: Alignment.topLeft, ],
end: Alignment.bottomRight, ),
colors: [ margin: EdgeInsets.only(bottom: 16.h),
Color(0xFF0FFFF).withOpacity(1), borderGradient: LinearGradient(
Color(0xFFFFFFF), begin: Alignment.topLeft,
Color(0xFF0FFFF).withOpacity(1), end: Alignment.bottomRight,
], colors: [
), Color(0xFF0FFFF).withOpacity(1),
child: Column(key: UniqueKey(), Color(0xFFFFFFF),
// mainAxisAlignment: MainAxisAlignment.spaceAround, Color(0xFF0FFFF).withOpacity(1),
// ignore: prefer_const_literals_to_create_immutables ],
children: [ ),
// ignore: prefer_const_constructors child: Column(key: UniqueKey(),
Container( // mainAxisAlignment: MainAxisAlignment.spaceAround,
// color: Colors.red, // ignore: prefer_const_literals_to_create_immutables
height: 50, children: [
width: double.infinity, // Center(
padding: EdgeInsets.symmetric(horizontal: 16), // child: Text(
child: Text( // "${item.name}",
"${item.question}", // style: const TextStyle(
style: const TextStyle( // color: Colors.white,
color: Colors.white, // height: 2,
height: 2, // fontSize: 20,
fontSize: 20, // fontWeight: FontWeight.w600),
fontWeight: FontWeight.w600), // ),
)), // )
// ignore: prefer_const_constructors // ignore: prefer_const_constructors
Container(
Container( // color: Colors.red,
// color: Colors.red, height: 30,
padding: EdgeInsets.symmetric(horizontal: 16), width: double.infinity,
width: double.infinity, padding: EdgeInsets.symmetric(horizontal: 16),
height: 150, child: Text(
child: SingleChildScrollView( "${item.name}",
child: Text( style: const TextStyle(
"${item.answer}", color: Colors.white,
style: TextStyle(color: Colors.white, fontSize: 12 height: 2,
// height: 0.8 fontSize: 14,
), fontWeight: FontWeight.w600),
// height: 2, )),
// fontSize: 20, Container(
maxLines: 7, height: 30,
), width: double.infinity,
), padding: EdgeInsets.symmetric(horizontal: 16),
), child: Text(
])); "${item.createTime!.toLocal().year}-${item.createTime!.toLocal().month}-${item.createTime!.toLocal().day} ${item.createTime!.toLocal().hour}:${item.createTime!.toLocal().minute}",
style: const TextStyle(
color: Colors.white,
height: 2,
fontSize: 14,
fontWeight: FontWeight.w600),
)),
// ignore: prefer_const_constructors
])),
);
} }
...@@ -18,7 +18,7 @@ class _NewsPageListState extends State<NewsPageList> ...@@ -18,7 +18,7 @@ class _NewsPageListState extends State<NewsPageList>
@override @override
bool get wantKeepAlive => true; bool get wantKeepAlive => true;
final controller = Get.find<CategoryController>(); final controller = Get.put(CategoryController());
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
......
import 'dart:async'; import 'dart:async';
import 'package:chart/common/apis/apis.dart'; import 'package:chart/common/apis/apis.dart';
import 'package:chart/common/routers/routes.dart';
import 'package:chart/common/store/store.dart'; import 'package:chart/common/store/store.dart';
import 'package:chart/common/values/server.dart'; import 'package:chart/common/values/server.dart';
import 'package:chart/entity/user_entity.dart'; import 'package:chart/entity/user_entity.dart';
import 'package:chart/package/chat_dash/dash_chat_2.dart' as Chat; import 'package:chart/package/chat_dash/dash_chat_2.dart' as Chat;
import 'package:chart/package/chat_dash/dash_chat_2.dart'; import 'package:chart/package/chat_dash/dash_chat_2.dart';
import 'package:chart/pages/category/controller.dart';
import 'package:chart/pages/frame/product/controller.dart'; import 'package:chart/pages/frame/product/controller.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -63,7 +65,7 @@ class ChatNewController extends GetxController { ...@@ -63,7 +65,7 @@ class ChatNewController extends GetxController {
/// 事件 /// 事件
void sendMessage(Chat.ChatMessage message) async { void sendMessage(Chat.ChatMessage message) async {
print("${message.text}321321321"); print("${message.text}");
Vibrate.feedback(FeedbackType.impact); Vibrate.feedback(FeedbackType.impact);
// if (state.messageList.isNotEmpty) { // if (state.messageList.isNotEmpty) {
// // data = !_messages.every((element) => element.status != Status.sending); // // data = !_messages.every((element) => element.status != Status.sending);
...@@ -108,8 +110,11 @@ class ChatNewController extends GetxController { ...@@ -108,8 +110,11 @@ class ChatNewController extends GetxController {
if (UserStore.to.profile.id != '') { if (UserStore.to.profile.id != '') {
await initEventSource(); await initEventSource();
state.isLoading = true; state.isLoading = true;
int? result = int? result = await UserAPI.aiAnswerWithConversion({
await NewsAPI.aiAnswerWithStream({"question": message.text}); "question": message.text,
"conversionId": state.conversionId,
"next": state.isNext
});
// _cancelLoading(); // _cancelLoading();
// print( // print(
// "eventSource.isPausedeventSource.isPausedeventSource.isPaused---------------${eventSource.isPaused}"); // "eventSource.isPausedeventSource.isPausedeventSource.isPaused---------------${eventSource.isPaused}");
...@@ -190,6 +195,31 @@ class ChatNewController extends GetxController { ...@@ -190,6 +195,31 @@ class ChatNewController extends GetxController {
} }
// 方法 // 方法
closeChat() async {
// // final c = Get.put(ChatPageController());
final c = Get.put(CategoryController());
state.isNext = 1;
try {
await UserAPI.endConversion({
"conversionId": state.conversionId,
});
Vibrate.feedback(FeedbackType.impact);
state.messageList.value = [];
Get.back();
c.refresh();
} catch (e) {}
// Get.back();
// Get.defaultDialog(
// title: "提示",
// textConfirm:"",
// content: Container(
// child: Column(children: [Text("返回后查看当前回话记录请去我的信息页面!")
// ]),
// ));
}
// 拉取数据 // 拉取数据
Future<void> fetchNewsList({bool isRefresh = false}) async { Future<void> fetchNewsList({bool isRefresh = false}) async {
// var result = // var result =
...@@ -208,33 +238,99 @@ class ChatNewController extends GetxController { ...@@ -208,33 +238,99 @@ class ChatNewController extends GetxController {
// print("${state.newsList.length}"); // print("${state.newsList.length}");
} }
getMessageList(messageList, id) {
// final list = messageList?.forEach((item) {
// // if (item['role'] == "user") {
// // return Chat.ChatMessage(
// // text: item['content'],
// // user: _user,
// // createdAt: DateTime.now(),
// // );
// // } else {
// // return ChatMessage(
// // user: receiveUser,
// // createdAt: DateTime.now(),
// // text: item['content'],
// // );
// // }
// });
final messages = List<ChatMessage>.generate(messageList.length, (index) {
final i = messageList[index];
var message;
if (i?.role == "user") {
message = Chat.ChatMessage(
text: i?.content,
user: _user,
createdAt: DateTime.parse(i.sendTime).toLocal(),
);
} else {
message = ChatMessage(
user: receiveUser,
createdAt: DateTime.parse(i.sendTime).toLocal(),
text: i?.content,
);
}
return message;
});
state.isNext = 2;
state.messageList.value = messages.reversed.toList();
state.conversionId = id;
Get.toNamed("${AppRoutes.CHAT_PAGE}");
}
sendMessageByBanner(String message) async {
await createConversionId();
// Vibrate.feedback(FeedbackType.impact);
// // message.question
Chat.ChatUser _user = Chat.ChatUser(
id: '1',
// firstName: 'Charles',
// lastName: 'Leclerc',
);
// // ?question=${message.question}
// Get.toNamed("${AppRoutes.CHAT_PAGE}");
sendMessage(Chat.ChatMessage(
text: "${message}",
user: _user,
createdAt: DateTime.now(),
));
}
initEventSource() async { initEventSource() async {
// if (UserStore.to.isLogin) { // if (UserStore.to.isLogin) {
sse = SSEClient.subscribeToSSE( sse = SSEClient.subscribeToSSE(
url: "$SERVER_API_URL/openAi/connect/${UserStore.to.profile.id}", url: "$SERVER_API_URL/openAi/connect/${UserStore.to.profile.id}",
header: {}).listen((event) { header: {}).listen((event) async {
if (event.id == "[DONE]") { if (event.data!.trim().isEmpty) {
return;
} else if (event.id == "[DONE]") {
await UserAPI.saveResp({
"conversionId": state.conversionId,
"content": state.messageList[0].text,
});
state.isLoading = false; state.isLoading = false;
// SSEClient.unsubscribeFromSSE();
// eventSource.cancel();
return; return;
} }
print('Id: ' + event.id!);
print('Event: ' + event.event!);
print('Data: ' + event.data!);
Map<String, dynamic> jsonMap = jsonDecode("${event.data}"); Map<String, dynamic> jsonMap = jsonDecode("${event.data}");
if (jsonMap['askType'] == 1) { if (jsonMap['askType'] == 1) {
_updateMessage("${jsonMap['content']}" as String); _updateMessage("${jsonMap['content']}" as String);
} else {
// print("${jsonMap['content']}}");
print("${jsonMap['content']}");
ProductController.to.state.inderText =
ProductController.to.state.inderText + jsonMap['content'];
// state.genText
} }
}); });
} }
Future createConversionId() async {
Vibrate.feedback(FeedbackType.impact);
Get.toNamed(AppRoutes.CHAT_PAGE);
int id = await UserAPI.createConversion();
state.conversionId = id;
}
_updateMessage(String text) { _updateMessage(String text) {
// state.messageList[0].text = state.messageList[0].text + text; // state.messageList[0].text = state.messageList[0].text + text;
// state.messageList.forEach((element) { // state.messageList.forEach((element) {
...@@ -274,8 +370,8 @@ class ChatNewController extends GetxController { ...@@ -274,8 +370,8 @@ class ChatNewController extends GetxController {
tabMessage(message) { tabMessage(message) {
Clipboard.setData(ClipboardData(text: message?.text)); Clipboard.setData(ClipboardData(text: message?.text));
EasyLoading.showSuccess("复制成功");
Get.snackbar("复制成功", "", colorText: Colors.white); // Get.snackbar("复制成功", "", colorText: Colors.white);
} }
@override @override
......
...@@ -11,12 +11,20 @@ class ChatPageState { ...@@ -11,12 +11,20 @@ class ChatPageState {
// get _messageList => // get _messageList =>
final _page = "AI写作大师".obs; final _page = "AI写作大师".obs;
set page(value) => this._page.value = value; set page(value) => _page.value = value;
get page => this._page.value; get page => _page.value;
RxBool _isLoading = false.obs; final RxBool _isLoading = false.obs;
set isLoading(value) => _isLoading.value = value; set isLoading(value) => _isLoading.value = value;
get isLoading => _isLoading.value; get isLoading => _isLoading.value;
final _conversionId = 0.obs;
set conversionId(value) => _conversionId.value = value;
get conversionId => _conversionId.value;
final _isNext = 1.obs;
set isNext(value) => _isNext.value = value;
get isNext => _isNext.value;
// RxList<NewsItem> newsList = <NewsItem>[].obs; // RxList<NewsItem> newsList = <NewsItem>[].obs;
} }
...@@ -45,7 +45,7 @@ class ChatNewPage extends GetView<ChatNewController> { ...@@ -45,7 +45,7 @@ class ChatNewPage extends GetView<ChatNewController> {
appBar: transparentAppBar( appBar: transparentAppBar(
actions: [ actions: [
IconButton( IconButton(
tooltip: '返回上一页', tooltip: '分享',
icon: const Icon( icon: const Icon(
Icons.share, Icons.share,
color: AppColors.primaryElementText, color: AppColors.primaryElementText,
...@@ -81,7 +81,8 @@ class ChatNewPage extends GetView<ChatNewController> { ...@@ -81,7 +81,8 @@ class ChatNewPage extends GetView<ChatNewController> {
color: AppColors.primaryElementText, color: AppColors.primaryElementText,
), ),
onPressed: () { onPressed: () {
Get.back(); // Get.back();
controller.closeChat();
// Get.offAll(ApplicationPage()); // Get.offAll(ApplicationPage());
// await Get.off(ApplicationPage()); // await Get.off(ApplicationPage());
// Get.toNamed(AppRoutes.Application); // Get.toNamed(AppRoutes.Application);
......
...@@ -70,17 +70,21 @@ class ProductController extends GetxController { ...@@ -70,17 +70,21 @@ class ProductController extends GetxController {
sse = SSEClient.subscribeToSSE( sse = SSEClient.subscribeToSSE(
url: "$SERVER_API_URL/openAi/connect/${UserStore.to.profile.id}", url: "$SERVER_API_URL/openAi/connect/${UserStore.to.profile.id}",
header: {}).listen((event) { header: {}).listen((event) {
if (event.id == "[DONE]") { try {
state.isLoading = false; if (EasyLoading.isShow) {
return; EasyLoading.dismiss();
} }
Map<String, dynamic> jsonMap = jsonDecode("${event.data}"); if (event.id == "[DONE]") {
if (jsonMap['askType'] == 1) { state.isLoading = false;
// _updateMessage("${jsonMap['content']}" as String);
} else { return;
}
Map<String, dynamic> jsonMap = jsonDecode(event.data as String);
state.inderText = state.inderText + jsonMap['content']; state.inderText = state.inderText + jsonMap['content'];
// state.genText } catch (e) {
EasyLoading.dismiss();
} }
//
}); });
} }
...@@ -102,7 +106,7 @@ class ProductController extends GetxController { ...@@ -102,7 +106,7 @@ class ProductController extends GetxController {
handleCopy() { handleCopy() {
Clipboard.setData(ClipboardData(text: state.inderText)); Clipboard.setData(ClipboardData(text: state.inderText));
Get.snackbar("复制成功", "", colorText: Colors.white); EasyLoading.showSuccess("复制成功");
} }
void handleGenText() async { void handleGenText() async {
...@@ -125,19 +129,6 @@ class ProductController extends GetxController { ...@@ -125,19 +129,6 @@ class ProductController extends GetxController {
// GetX.pop.pop() // GetX.pop.pop()
Get.back(); Get.back();
state.loading = true; state.loading = true;
EasyLoading.show(status: "AI正在生成中...");
// "question": str + str1 + str3, "id": "${UserStore.to.profile.id}
// [
// {
// "id": 0,
// "label": "",
// "placeHolder": "",
// "value": ""
// }
// ]
// json.encode(map);
if (UserStore.to.isLogin) { if (UserStore.to.isLogin) {
state.isLoading = true; state.isLoading = true;
...@@ -156,9 +147,9 @@ class ProductController extends GetxController { ...@@ -156,9 +147,9 @@ class ProductController extends GetxController {
"sort": 2, "sort": 2,
} }
], params['detailId']!); ], params['detailId']!);
EasyLoading.show(status: "AI正在生成中...");
if (result == 200) { if (result == 200) {
EasyLoading.dismiss(); // EasyLoading.dismiss();
UserAPI.getUserInfo().then((value) async { UserAPI.getUserInfo().then((value) async {
await UserStore.to.saveProfile(IntegralEntity( await UserStore.to.saveProfile(IntegralEntity(
id: UserStore.to.profile.id, id: UserStore.to.profile.id,
...@@ -185,10 +176,10 @@ class ProductController extends GetxController { ...@@ -185,10 +176,10 @@ class ProductController extends GetxController {
state.loading = false; state.loading = false;
// Get.snackbar("错误提示", "您的问题还没有填完", colorText: Colors.white); // Get.snackbar("错误提示", "您的问题还没有填完", colorText: Colors.white);
} }
EasyLoading.dismiss(); // EasyLoading.dismiss();
} catch (e) { } catch (e) {
state.loading = false; state.loading = false;
EasyLoading.dismiss(); // EasyLoading.dismiss();
} }
print("$str"); print("$str");
......
...@@ -94,22 +94,7 @@ class SiperBannerWidget extends GetView<MainController> { ...@@ -94,22 +94,7 @@ class SiperBannerWidget extends GetView<MainController> {
padding: EdgeInsets.symmetric(horizontal: 16), padding: EdgeInsets.symmetric(horizontal: 16),
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
Vibrate.feedback(FeedbackType.impact); c.sendMessageByBanner(message.question);
// message.question
Chat.ChatUser _user = Chat.ChatUser(
id: '1',
// firstName: 'Charles',
// lastName: 'Leclerc',
);
Get.toNamed(
"${AppRoutes.CHAT_PAGE}?question=${message.question}");
c.sendMessage(Chat.ChatMessage(
text: "${message.question}",
user: _user,
createdAt: DateTime.now(),
));
}, },
child: Container( child: Container(
height: 70, height: 70,
......
import 'package:chart/common/entities/classFyDetail.dart'; import 'package:chart/common/entities/classFyDetail.dart';
import 'package:chart/pages/main/controller.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../common/apis/apis.dart'; import '../../common/apis/apis.dart';
...@@ -24,7 +25,10 @@ class TemplateController extends GetxController { ...@@ -24,7 +25,10 @@ class TemplateController extends GetxController {
} }
handleSetActId(int id) { handleSetActId(int id) {
final c = Get.find<MainController>();
final act = c.state.bannerPage!.firstWhere((element) => element.id == id);
actId = id; actId = id;
state.title = act.classifyName;
} }
/// 在 widget 内存中分配后立即调用。 /// 在 widget 内存中分配后立即调用。
......
...@@ -3,4 +3,8 @@ import 'package:get/get.dart'; ...@@ -3,4 +3,8 @@ import 'package:get/get.dart';
class TemplateState { class TemplateState {
RxMap mapItem = Map().obs; RxMap mapItem = Map().obs;
final _title = '模版中心'.obs;
set title(value) => _title.value = value;
get title => _title.value;
} }
...@@ -20,37 +20,6 @@ class TemplatePage extends GetView<TemplateController> { ...@@ -20,37 +20,6 @@ class TemplatePage extends GetView<TemplateController> {
fit: BoxFit.cover), fit: BoxFit.cover),
), ),
child: const HelloWidget(), child: const HelloWidget(),
// GlassmorphicContainer(
// width: Get.mediaQuery.size.width * 1,
// height: Get.mediaQuery.size.height * 1,
// // margin: EdgeInsets.only(bottom: 60),
// // padding: EdgeInsets.all(20),
// // ignore: sort_child_properties_last
// child:
// borderRadius: 14,
// blur: 14,
// alignment: Alignment.bottomCenter,
// border: 2,
// linearGradient: LinearGradient(
// begin: Alignment.topLeft,
// end: Alignment.bottomRight,
// colors: [
// const Color(0xFF0FFFF).withOpacity(0.0),
// const Color(0xFF0FFFF).withOpacity(0.0),
// ],
// ),
// borderGradient: LinearGradient(
// begin: Alignment.topLeft,
// end: Alignment.bottomRight,
// colors: [
// const Color(0xFF0FFFF).withOpacity(1),
// const Color(0xFFFFFFF),
// const Color(0xFF0FFFF).withOpacity(1),
// ],
// ),
// // child: ,
// ),
); );
} }
...@@ -60,28 +29,21 @@ class TemplatePage extends GetView<TemplateController> { ...@@ -60,28 +29,21 @@ class TemplatePage extends GetView<TemplateController> {
builder: (_) { builder: (_) {
return Scaffold( return Scaffold(
appBar: transparentAppBar( appBar: transparentAppBar(
leading: IconButton( leading: IconButton(
tooltip: '返回上一页', tooltip: '返回上一页',
icon: const Icon( icon: const Icon(
Icons.arrow_back, Icons.arrow_back,
color: AppColors.primaryElementText, color: AppColors.primaryElementText,
),
onPressed: () async {
// Get.back();
// Get.offAll(ApplicationPage());
// await Get.off(ApplicationPage());
// Get.toNamed(AppRoutes.Application);
Get.back();
// await Get.toNamed();
// Navigator.of(context).pop();
//_nextPage(-1);
},
), ),
title: const Text( onPressed: () async {
"模版中心", Get.back();
style: TextStyle(color: Colors.white), },
)), ),
title: Obx(() => Text(
controller.state.title,
style: TextStyle(color: Colors.white),
)),
),
body: _buildView()); body: _buildView());
}, },
); );
......
...@@ -16,8 +16,6 @@ class HelloWidget extends GetView<TemplateController> { ...@@ -16,8 +16,6 @@ class HelloWidget extends GetView<TemplateController> {
const HelloWidget({Key? key}) : super(key: key); const HelloWidget({Key? key}) : super(key: key);
Widget _renderList(int index) { Widget _renderList(int index) {
final c = Get.find<MainController>();
final productController = Get.put(ProductController()); final productController = Get.put(ProductController());
return Obx(() => controller.state.mapItem[controller.actId] == null return Obx(() => controller.state.mapItem[controller.actId] == null
? SizedBox.shrink() ? SizedBox.shrink()
......
...@@ -48,8 +48,8 @@ class UserDetailController extends GetxController { ...@@ -48,8 +48,8 @@ class UserDetailController extends GetxController {
// 拉取数据 // 拉取数据
Future<void> fetchNewsList({bool isRefresh = false}) async { Future<void> fetchNewsList({bool isRefresh = false}) async {
var result = var result = await NewsAPI.getConversionByUserId(
await NewsAPI.newsPageList({'page': curPage, "size": pageSize}); {'page': curPage, "size": pageSize});
if (isRefresh == true) { if (isRefresh == true) {
curPage = 1; curPage = 1;
......
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