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

add

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