From 6d89211df9fd436a1929c313c791a5c45ffb6925 Mon Sep 17 00:00:00 2001 From: zhangmeng1334717033 Date: Wed, 10 Jun 2020 18:27:55 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=99=BB=E9=99=86=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/chatting_api.dart | 98 ++++++++++++++++++++++++++++++++---- lib/chatting_api_result.dart | 22 ++++++++ lib/loading_page.dart | 10 +--- lib/login_page.dart | 43 ++++++++++++++-- pubspec.lock | 7 +++ pubspec.yaml | 1 + 6 files changed, 158 insertions(+), 23 deletions(-) create mode 100644 lib/chatting_api_result.dart diff --git a/lib/chatting_api.dart b/lib/chatting_api.dart index 1e4b869..ea05f3a 100644 --- a/lib/chatting_api.dart +++ b/lib/chatting_api.dart @@ -1,26 +1,71 @@ +import 'dart:collection'; +import 'dart:convert'; +import 'dart:io'; +import 'package:chatting/chatting_api_result.dart'; import 'package:flutter/material.dart'; import 'package:dio/dio.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +import 'chatting_data_page.dart'; Dio dio = new Dio(); class ChattingApi { + Options options = Options(headers: {HttpHeaders.acceptHeader: "accept: application/json"}); + String token; + int time; + String message; + ChattingApiResult chattingApiResult ; + Map map = new Map(); + List list; + //登陆提交 - loginSubmit(String username,String password) async { - var result = await dio.get(''); - return result.data; + loginSubmit(String username, String password) async { + print(username); + print(password); + FormData formData = new FormData.from({ + 'username':username, + 'password':password, + }); + var result = await dio.post( + 'http://customer.dsd361.com/login', + data: formData, + options: options + ); + print(result.data); + token=result.data['token']; + time=result.data['loginTime']; + message=result.data['message']; + chattingApiResult= new ChattingApiResult(token,time,message,null,null,null); + print(chattingApiResult.runtimeType); + return chattingApiResult ; } //获取通讯录列表 - getContactList(String id) async { - var result = await dio - .get('http://www.liulongbin.top:3005/api/v2/movie/subject/$id'); - return result.data; + getContactList() async { } //获取聊天列表 - getChattingList(String id) async { - var result = await dio.get(''); - return result.data; + getChattingList() async { + token = await dataManipulation_get('token'); + + FormData formData = new FormData.from({ + 'token':token + }); + var response = await dio.post('http://customer.dsd361.com/newchattings/selectChattingeFriebdList',data: formData); + List result=response.data; + list = new List(); + result.forEach((item) { + int sendId =int.parse(item['send_id']); + int receiveId =item['receiveId']; + String photoUrl =item['photoUrl']; + String user_name =item['user_name']; + String content =item['lastOne_chattinglog']['content']; + int cl_addTime =item['cl_addTime']; + MessageData messageData =new MessageData(sendId, receiveId,"http://blogimages.jspang.com/blogtouxiang1.jpg", user_name, content, DateTime.fromMillisecondsSinceEpoch(cl_addTime), MessageType.CHAT); + list.add(messageData); + }); + return list; } //获取当前用户信息 @@ -28,4 +73,37 @@ class ChattingApi { var result = await dio.get(''); return result.data; } + + /** + * 异步 数据操作 + */ + void dataManipulation_set(String key, var value) async { + final prefs = await SharedPreferences.getInstance(); //获取SP的实例 + prefs.setString(key, value); //存储数据 + } + + /** + * 异步 数据操作 + */ + void dataManipulation_setint(String key, var value) async { + final prefs = await SharedPreferences.getInstance(); //获取SP的实例 + prefs.setInt(key, value); //存储数据 + } + + /** + * 异步 数据操作 + */ + dataManipulation_get(String key) async { + final prefs = await SharedPreferences.getInstance(); //获取SP的实例 + var value = prefs.get(key); //获取数据 + return value; + } + + /** + * 异步 数据操作 + */ + void dataManipulation_remove(String key, var value) async { + final prefs = await SharedPreferences.getInstance(); //获取SP的实例 + prefs.remove(key); //删除数据 + } } diff --git a/lib/chatting_api_result.dart b/lib/chatting_api_result.dart new file mode 100644 index 0000000..3b96b21 --- /dev/null +++ b/lib/chatting_api_result.dart @@ -0,0 +1,22 @@ + +class ChattingApiResult extends Object{ + + String token; + + int time; + + String message; + + int sendId; + + int receiveId; + + String content; + + ChattingApiResult(this.token, this.time, this.message, this.sendId, this.receiveId, this.content); + + @override + String toString() { + return 'ChattingApiResult{token: $token, time: $time, message: $message, sendId: $sendId, receiveId: $receiveId, content: $content}'; + } +} \ No newline at end of file diff --git a/lib/loading_page.dart b/lib/loading_page.dart index e865738..afb9e07 100644 --- a/lib/loading_page.dart +++ b/lib/loading_page.dart @@ -12,24 +12,16 @@ class LoadingPage extends StatefulWidget { class _LoadingPageState extends State { //0 未登录 ,1 已登录 - void initData() async { final prefs = await SharedPreferences.getInstance(); //获取SP的实例 int loginStatus=prefs.getInt('loginStatus') ?? 0; print(prefs.getInt('current_num')); - if(loginStatus == 0){ + if(loginStatus == 1){ Navigator.of(context).pushReplacementNamed("login"); }else{ loginStatus=1; Navigator.of(context).pushReplacementNamed("app"); } - - /*prefs.setInt('current_num', 999); //存储数据 - var currentNum = prefs.getInt('current_num') ?? 0; //读取数据,默认为0 - print('读取数据 $currentNum'); - prefs.remove('current_num');//删除数据 - var delCurrentNum = prefs.getInt('current_num') ?? 0; //读取数据,默认为0 - print('删除数据 $delCurrentNum');*/ } @override diff --git a/lib/login_page.dart b/lib/login_page.dart index b6b3327..afc1d08 100644 --- a/lib/login_page.dart +++ b/lib/login_page.dart @@ -1,8 +1,12 @@ +import 'package:chatting/chatting_api_result.dart'; +import 'dart:convert' as convert; import 'package:date_format/date_format.dart'; import 'package:flutter/material.dart'; import 'package:fluttertoast/fluttertoast.dart'; import 'package:chatting/chatting_api.dart'; +final ChattingApi chattingApi = ChattingApi(); + class LoginPag extends StatefulWidget { @override _LoginPagState createState() => _LoginPagState(); @@ -45,7 +49,6 @@ class _LoginPagState extends State { ), buildEditWidget(context), buildLoginButton(), - ], ), ), @@ -58,8 +61,8 @@ class _LoginPagState extends State { double width = MediaQuery.of(context).size.width; print(width); return Container( - width: width, - height: height, + width: width, + height: height, color: Colors.blue[400], child: Stack( overflow: Overflow.visible, // 超出部分显示 @@ -75,8 +78,10 @@ class _LoginPagState extends State { boxShadow: [ BoxShadow(color: Theme.of(context).cardColor, blurRadius: 4.0) ], + ///形状 shape: BoxShape.circle, + ///图片 image: DecorationImage( fit: BoxFit.cover, @@ -211,7 +216,7 @@ class _LoginPagState extends State { timeInSecForIos: 2, textColor: Colors.white, fontSize: 14.0); - return ChattingApi().loginSubmit(_userNameEditController.text, _pwdEditController.text); + loginProcessing(); } }, child: Text("登录"), @@ -245,4 +250,34 @@ class _LoginPagState extends State { } return true; } + + void loginProcessing() async{ + String username = _userNameEditController.text; + String password = _pwdEditController.text; + ChattingApiResult result =await chattingApi.loginSubmit(username, password); + String token = result.token; + String message = result.message; + if (token != null) { + Fluttertoast.showToast( + msg: "登录成功", + gravity: ToastGravity.CENTER, + timeInSecForIos: 2, + textColor: Colors.white, + fontSize: 14.0); + //存放用户信息 + chattingApi.dataManipulation_set('token', token); + //存放用户的状态 + chattingApi.dataManipulation_setint('loginStatus', 1); + //跳转至home页 + Navigator.of(context).pushReplacementNamed("app"); + } else { + Fluttertoast.showToast( + msg: message, + gravity: ToastGravity.CENTER, + timeInSecForIos: 2, + textColor: Colors.white, + fontSize: 14.0); + } +// return result; + } } diff --git a/pubspec.lock b/pubspec.lock index 9a62458..8f4b027 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -121,6 +121,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.1.12" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.9+1" matcher: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 36a7c6d..c26a81a 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -33,6 +33,7 @@ dependencies: dio: ^1.0.9 fluttertoast: ^3.0.3 provider: ^3.2.0 + json_annotation: ^0.2.3 shared_preferences: ^0.5.7+3 dev_dependencies: flutter_test: