提交 47ead385 authored 作者: yueweilu's avatar yueweilu

add

上级 b51bb84c
...@@ -276,7 +276,7 @@ abstract class LibraryAPI { ...@@ -276,7 +276,7 @@ abstract class LibraryAPI {
String types = '3', String types = '3',
required String content, required String content,
required String isOpen, required String isOpen,
String color= '', String color= '#FF0000',
required String positioning, required String positioning,
required String noteContent, required String noteContent,
}) async { }) async {
......
...@@ -215,7 +215,7 @@ abstract class MineAPI { ...@@ -215,7 +215,7 @@ abstract class MineAPI {
}); });
} }
/// 13、笔记详情列表 /// 13、讨论详情列表
/// ///
static Future<List<DiscussModel>> discussList( static Future<List<DiscussModel>> discussList(
{int page = 1, {int page = 1,
...@@ -228,7 +228,7 @@ abstract class MineAPI { ...@@ -228,7 +228,7 @@ abstract class MineAPI {
'page': page, 'page': page,
'page_size': limit, 'page_size': limit,
'book_id': bookId, 'book_id': bookId,
'types': types 'type': types
}, },
); );
if (result.data is! Map && result.data['list'] is! List) return []; if (result.data is! Map && result.data['list'] is! List) return [];
......
...@@ -246,6 +246,8 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide ...@@ -246,6 +246,8 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
void chooseTool(ToolModel selectedModel){ void chooseTool(ToolModel selectedModel){
for (var model in tools) { for (var model in tools) {
// 如果当前遍历到的工具是选中的,并且不是点击的工具,则取消选中 // 如果当前遍历到的工具是选中的,并且不是点击的工具,则取消选中
......
...@@ -54,6 +54,7 @@ class UserDiscussDesController extends GetxController { ...@@ -54,6 +54,7 @@ class UserDiscussDesController extends GetxController {
refreshController.finishRefresh(IndicatorResult.success); refreshController.finishRefresh(IndicatorResult.success);
refreshController.resetFooter(); refreshController.resetFooter();
} catch (error) { } catch (error) {
Console.log('------------onRefresh-----------------$error');
refreshController.finishRefresh(IndicatorResult.fail); refreshController.finishRefresh(IndicatorResult.fail);
} }
} }
......
...@@ -22,6 +22,7 @@ class _BuildListPageState extends State<BuildListPage> with AutomaticKeepAliveCl ...@@ -22,6 +22,7 @@ class _BuildListPageState extends State<BuildListPage> with AutomaticKeepAliveCl
init: UserDiscussDesController(widget.tag,widget.model), init: UserDiscussDesController(widget.tag,widget.model),
builder: (controller) =>CustomPullScrollView( builder: (controller) =>CustomPullScrollView(
controller: controller.refreshController, controller: controller.refreshController,
// onRefresh: controller.onRefresh,
onLoading: controller.onLoading, onLoading: controller.onLoading,
child: ListView.builder( child: ListView.builder(
itemBuilder: (BuildContext context,int index){ itemBuilder: (BuildContext context,int index){
......
...@@ -24,8 +24,8 @@ class HttpService extends GetxService { ...@@ -24,8 +24,8 @@ class HttpService extends GetxService {
/// 组织 headers 参数 /// 组织 headers 参数
Map<String,dynamic>? _getHeaders({bool excludeToken = false,Map<String,dynamic>? params,String? url}) { Map<String,dynamic>? _getHeaders({bool excludeToken = false,Map<String,dynamic>? params,String? url}) {
final headers = <String, dynamic>{}; final headers = <String, dynamic>{};
headers['appId'] = AppConfig.AppID; headers['appId'] = AppConfig.appID;
headers['appSecret'] = AppConfig.AppSecret; headers['appSecret'] = AppConfig.appSecret;
headers['timestamp'] = (DateTime.now().millisecondsSinceEpoch~/1000).toString(); headers['timestamp'] = (DateTime.now().millisecondsSinceEpoch~/1000).toString();
headers['url'] = kServerUrl + url.toString(); headers['url'] = kServerUrl + url.toString();
......
...@@ -2,10 +2,14 @@ part of utils; ...@@ -2,10 +2,14 @@ part of utils;
class AppConfig{ class AppConfig{
//app在服务端注册的id,由后端直接提供 //app在服务端注册的id,由后端直接提供
static const String AppID = 'dkFv6OwWyQhSeaZG'; static const String appID = 'dkFv6OwWyQhSeaZG';
//app在服务端的秘钥串,由后端直接提供 //app在服务端的秘钥串,由后端直接提供
static const String AppSecret = 'd34cea92316d1da113e95158bed9ca97'; static const String appSecret = 'd34cea92316d1da113e95158bed9ca97';
//签名时使用的加密串,由后端直接提供 //签名时使用的加密串,由后端直接提供
static const String AppEncodeKey = '&4F6g4Y6b5L4R9'; static const String appEncodeKey = '&4F6g4Y6b5L4R9';
// 下载需要的key
static const String aesKey = 'e8a83e801cf85d90b69556b0cb1e0c8a';
static const String aesIV = '13e801c8901b6955';
} }
...@@ -14,6 +14,7 @@ const String kFailOrder = 'failOrder'; ...@@ -14,6 +14,7 @@ const String kFailOrder = 'failOrder';
abstract class C { abstract class C {
static const String localAccount = 'storage_account'; static const String localAccount = 'storage_account';
static const String localThemeMode = 'storage_theme_mode'; static const String localThemeMode = 'storage_theme_mode';
......
...@@ -7,4 +7,25 @@ class EncryptUtil { ...@@ -7,4 +7,25 @@ class EncryptUtil {
var digest = md5.convert(content); var digest = md5.convert(content);
return hex.encode(digest.bytes); return hex.encode(digest.bytes);
} }
/// AES 加密
static aesEncrypt(String content,[String aesKey = AppConfig.aesKey,]) {
final key = encrypt.Key.fromUtf8(aesKey);
final iv = encrypt.IV.fromBase64(base64Encode(utf8.encode(AppConfig.aesIV)));
final encryptor = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc),);
final encrypted = encryptor.encrypt(content, iv: iv);
return encrypted.base64;
}
/// AES 解密
static aesDecrypt(String content,[String aesKey = AppConfig.aesKey,]) {
final key = encrypt.Key.fromUtf8(aesKey);
final iv = encrypt.IV.fromBase64(base64Encode(utf8.encode(AppConfig.aesIV)));
final encryptor = encrypt.Encrypter(encrypt.AES(key, mode: encrypt.AESMode.cbc));
final encrypted = encrypt.Encrypted.fromBase64(content);
final decrypted = encryptor.decrypt(encrypted, iv: iv);
return decrypted;
}
} }
\ No newline at end of file
...@@ -4,6 +4,8 @@ import 'dart:convert'; ...@@ -4,6 +4,8 @@ import 'dart:convert';
import 'dart:io'; import 'dart:io';
import 'dart:ui'; import 'dart:ui';
// import 'package:encrypt/encrypt.dart';
import 'package:encrypt/encrypt.dart' as encrypt; // 使用别名 'encrypt'
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
...@@ -16,7 +18,6 @@ import 'package:convert/convert.dart'; ...@@ -16,7 +18,6 @@ import 'package:convert/convert.dart';
import 'package:oktoast/oktoast.dart'; import 'package:oktoast/oktoast.dart';
import 'package:path_provider/path_provider.dart'; import 'package:path_provider/path_provider.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import '../widgets/index.dart'; import '../widgets/index.dart';
......
...@@ -8,7 +8,7 @@ class SignTool { ...@@ -8,7 +8,7 @@ class SignTool {
tempArr.add("$key=${tempParams[key]}"); tempArr.add("$key=${tempParams[key]}");
} }
String tempStr = tempArr.join("&"); String tempStr = tempArr.join("&");
String finalString = tempStr + AppConfig.AppEncodeKey; String finalString = tempStr + AppConfig.appEncodeKey;
String finalEncodeStr = EncryptUtil.encodeMd5(EncryptUtil.encodeMd5(finalString)); String finalEncodeStr = EncryptUtil.encodeMd5(EncryptUtil.encodeMd5(finalString));
return finalEncodeStr; return finalEncodeStr;
} }
......
差异被折叠。
...@@ -103,6 +103,8 @@ dependencies: ...@@ -103,6 +103,8 @@ dependencies:
tobias: ^3.3.0 tobias: ^3.3.0
# 内购 # 内购
flutter_inapp_purchase: ^5.6.1 flutter_inapp_purchase: ^5.6.1
encrypt: ^5.0.3
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论