提交 3b6660e4 authored 作者: maodou's avatar maodou

Merge remote-tracking branch 'origin/test' into test

...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
18D185D62B6745D100561CC8 /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 18D185D52B6745D100561CC8 /* StoreKit.framework */; };
297D4B521D4A45CEFC018F23 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D9746A3A42B49971E109B58 /* libPods-Runner.a */; }; 297D4B521D4A45CEFC018F23 /* libPods-Runner.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7D9746A3A42B49971E109B58 /* libPods-Runner.a */; };
331C80F4294D02FB00263BE5 /* RunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 331C80F3294D02FB00263BE5 /* RunnerTests.m */; }; 331C80F4294D02FB00263BE5 /* RunnerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 331C80F3294D02FB00263BE5 /* RunnerTests.m */; };
389E384DCE26FA37EA2BA4FF /* libPods-RunnerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E360DC6E27A1D286B37E030A /* libPods-RunnerTests.a */; }; 389E384DCE26FA37EA2BA4FF /* libPods-RunnerTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E360DC6E27A1D286B37E030A /* libPods-RunnerTests.a */; };
...@@ -45,6 +46,8 @@ ...@@ -45,6 +46,8 @@
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = "<group>"; };
1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = "<group>"; };
18D185D52B6745D100561CC8 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
18D185D72B674B4300561CC8 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = "<group>"; };
1D32EB398235AD2BE8600068 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; }; 1D32EB398235AD2BE8600068 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = "<group>"; };
331C80F1294D02FB00263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80F1294D02FB00263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
331C80F3294D02FB00263BE5 /* RunnerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerTests.m; sourceTree = "<group>"; }; 331C80F3294D02FB00263BE5 /* RunnerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RunnerTests.m; sourceTree = "<group>"; };
...@@ -83,6 +86,7 @@ ...@@ -83,6 +86,7 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
297D4B521D4A45CEFC018F23 /* libPods-Runner.a in Frameworks */, 297D4B521D4A45CEFC018F23 /* libPods-Runner.a in Frameworks */,
18D185D62B6745D100561CC8 /* StoreKit.framework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
...@@ -132,6 +136,7 @@ ...@@ -132,6 +136,7 @@
97C146F01CF9000F007C117D /* Runner */ = { 97C146F01CF9000F007C117D /* Runner */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
18D185D72B674B4300561CC8 /* Runner.entitlements */,
7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */, 7AFFD8ED1D35381100E5BB4D /* AppDelegate.h */,
7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */, 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */,
97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FA1CF9000F007C117D /* Main.storyboard */,
...@@ -169,6 +174,7 @@ ...@@ -169,6 +174,7 @@
DEAEA83548321DAC7AAEFA5B /* Frameworks */ = { DEAEA83548321DAC7AAEFA5B /* Frameworks */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
18D185D52B6745D100561CC8 /* StoreKit.framework */,
7D9746A3A42B49971E109B58 /* libPods-Runner.a */, 7D9746A3A42B49971E109B58 /* libPods-Runner.a */,
E360DC6E27A1D286B37E030A /* libPods-RunnerTests.a */, E360DC6E27A1D286B37E030A /* libPods-RunnerTests.a */,
); );
...@@ -476,6 +482,7 @@ ...@@ -476,6 +482,7 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = MYN43C5WGE; DEVELOPMENT_TEAM = MYN43C5WGE;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
...@@ -644,6 +651,7 @@ ...@@ -644,6 +651,7 @@
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = MYN43C5WGE; DEVELOPMENT_TEAM = MYN43C5WGE;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
...@@ -665,6 +673,7 @@ ...@@ -665,6 +673,7 @@
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = { buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
DEVELOPMENT_TEAM = MYN43C5WGE; DEVELOPMENT_TEAM = MYN43C5WGE;
ENABLE_BITCODE = NO; ENABLE_BITCODE = NO;
......
...@@ -22,6 +22,19 @@ ...@@ -22,6 +22,19 @@
<string>$(FLUTTER_BUILD_NAME)</string> <string>$(FLUTTER_BUILD_NAME)</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleURLName</key>
<string>alipay</string>
<key>CFBundleURLSchemes</key>
<array>
<string>zijingbook</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>$(FLUTTER_BUILD_NUMBER)</string> <string>$(FLUTTER_BUILD_NUMBER)</string>
<key>LSRequiresIPhoneOS</key> <key>LSRequiresIPhoneOS</key>
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.associated-domains</key>
<array/>
</dict>
</plist>
...@@ -163,29 +163,6 @@ abstract class CommonAPI { ...@@ -163,29 +163,6 @@ abstract class CommonAPI {
return result.data['filesUrl']; return result.data['filesUrl'];
} }
/// 11、创建订单
///
static Future <PayOrderModel> createOrder({
required String bookIdsList,
required String totalPrice,
required String couponRecId,
required String integral,
required String type
}) async {
final result = await HttpService.to.post(
'/v1/orders/Orders/createOrders',
params: {
'book_ids_list':bookIdsList,
'total_price':totalPrice,
'coupon_rec_id':couponRecId,
'integral':integral,
'type':type,
},
);
if (result.data is! Map) return PayOrderModel();
return PayOrderModel.fromJson(result.data);
}
} }
\ No newline at end of file
...@@ -141,5 +141,49 @@ abstract class LibraryAPI { ...@@ -141,5 +141,49 @@ abstract class LibraryAPI {
return ReportModel.fromJson(result.data); return ReportModel.fromJson(result.data);
} }
/// 7、阅读页的笔记列表
///
static Future<List<NoteModel>> noteList(
{int page = 1,
int limit = 10,
required String bookId,
required String chapterId}) async {
final result = await HttpService.to.post(
'/v1/book/Information/getChapterNotesList',
params: {
'page': page,
'page_size': limit,
'book_id': bookId,
'chapter_id': chapterId
},
);
if (result.data is! Map && result.data['list'] is! List) return [];
return List.generate(result.data['list'].length, (index) {
return NoteModel.fromJson(result.data['list'][index]);
});
}
/// 8、笔记详情列表
///
static Future<List<DiscussModel>> discussList(
{int page = 1,
int limit = 10,
required String bookId,
required String chapterId}) async {
final result = await HttpService.to.post(
'/v1/book/Information/getChapterCommentList',
params: {
'page': page,
'page_size': limit,
'book_id': bookId,
'chapter_id': chapterId
},
);
if (result.data is! Map && result.data['list'] is! List) return [];
return List.generate(result.data['list'].length, (index) {
return DiscussModel.fromJson(result.data['list'][index]);
});
}
} }
\ No newline at end of file
...@@ -109,5 +109,45 @@ abstract class ShopAPI { ...@@ -109,5 +109,45 @@ abstract class ShopAPI {
return CouponNumModel.fromJson(result.data); return CouponNumModel.fromJson(result.data);
} }
/// 8、创建订单
///
static Future <PayOrderModel> createOrder({
required String bookIdsList,
required String totalPrice,
required String couponRecId,
required String integral,
required String type
}) async {
final result = await HttpService.to.post(
'/v1/orders/Orders/createOrders',
params: {
'book_ids_list':bookIdsList,
'total_price':totalPrice,
'coupon_rec_id':couponRecId,
'integral':integral,
'type':type,
},
);
if (result.data is! Map) return PayOrderModel();
return PayOrderModel.fromJson(result.data);
}
/// 9、获取订单状态
static Future <bool> orderStatus({
required String orderNumber,
}) async {
final result = await HttpService.to.post(
'/v1/orders/Orders/getOrdersStatus',
params: {
'ordersnum':orderNumber,
},
);
if (result.data is Map && result.data['pay_success'] == 1){
return true;
}
return false;
}
} }
\ No newline at end of file
...@@ -27,6 +27,10 @@ class BookPayController extends GetxController { ...@@ -27,6 +27,10 @@ class BookPayController extends GetxController {
PayModel(type: 3, name: '紫荆币', icon: 'assets/images/pay_coin.png', selected: false), PayModel(type: 3, name: '紫荆币', icon: 'assets/images/pay_coin.png', selected: false),
]; ];
// 支付宝
Tobias tobias = Tobias();
Fluwx fluwx = Fluwx();
// 时候展示底部视图 // 时候展示底部视图
bool showDetail = false; bool showDetail = false;
...@@ -137,6 +141,8 @@ class BookPayController extends GetxController { ...@@ -137,6 +141,8 @@ class BookPayController extends GetxController {
/// 创建订单 /// 创建订单
void createOrder() async { void createOrder() async {
fluwx.registerApi(appId: "wxd930ea5d5a228f5f",universalLink: "https://your.univerallink.com/link/");
List<Map<String, dynamic>> bookIdsList = []; List<Map<String, dynamic>> bookIdsList = [];
for (CourseModel model in buy){ for (CourseModel model in buy){
Map<String, dynamic> tempMap = { Map<String, dynamic> tempMap = {
...@@ -148,11 +154,30 @@ class BookPayController extends GetxController { ...@@ -148,11 +154,30 @@ class BookPayController extends GetxController {
} }
// 书豆支付的话先判断书豆数量 // 书豆支付的话先判断书豆数量
if (payModel.type == 3){
if (finalPrice.toDouble() > double.parse(showModel.membersBean.toString())){ if (finalPrice.toDouble() > double.parse(showModel.membersBean.toString())){
Toast.show('紫金币不足,请先充值紫荆币'); Toast.show('紫金币不足,请先充值紫荆币');
return; return;
} }
final result = await CommonAPI.createOrder( }
// 支付宝
if (payModel.type == 2){
final result = await tobias.isAliPayInstalled;
if(!result){
Toast.show('请先安装支付宝');
return;
}
}
// 微信
if (payModel.type ==1){
final result = await fluwx.isWeChatInstalled;
if(!result){
Toast.show('请先安装微信');
return;
}
}
final result = await ShopAPI.createOrder(
bookIdsList:jsonEncode(bookIdsList) , bookIdsList:jsonEncode(bookIdsList) ,
totalPrice: finalPrice.toString(), totalPrice: finalPrice.toString(),
couponRecId: useCouponModel.couponRecId.toString(), couponRecId: useCouponModel.couponRecId.toString(),
...@@ -164,26 +189,72 @@ class BookPayController extends GetxController { ...@@ -164,26 +189,72 @@ class BookPayController extends GetxController {
// 微信 // 微信
if(payModel.type == 1){ if(payModel.type == 1){
String orderNumber = payOrderModel.ordersnum.toString(); String orderNumber = payOrderModel.ordersnum.toString();
//TODO: 拿到订单编号进行微信支付操作 requestWechat();
} }
// 支付宝 // 支付宝
else if(payModel.type == 2){ else if(payModel.type == 2){
String orderNumber = payOrderModel.ordersnum.toString(); String orderNumber = payOrderModel.ordersnum.toString();
//TODO: 拿到订单编号进行支付宝支付操作 requestAliPay();
} }
// 书豆 // 书豆
else if (payModel.type == 3){ else if (payModel.type == 3){
if(payOrderModel.code == -1){ if(payOrderModel.code == -1){
Toast.show('紫金币不足,请先充值紫荆币'); Toast.show('紫金币不足,请先充值紫荆币');
return;
} }
String orderNumber = payOrderModel.ordersnum.toString(); String orderNumber = payOrderModel.ordersnum.toString();
//TODO: 拿到订单编号进行后续操作 //TODO: 拿到订单编号进行后续操作
} }
}
// 支付宝支付
void requestAliPay(){
print('================================================================${payOrderModel.encryptionOrder!}');
tobias.pay(payOrderModel.encryptionOrder!).then((payResult){
if (payResult['resultStatus'] == '9000') {
requestOrderStatus();
} else {
Toast.show(payResult['memo'].toString());
}
});
}
// 微信支付
void requestWechat(){
Payment payment = Payment(
appId: payOrderModel.appid??'',
partnerId: payOrderModel.partnerid??'',
prepayId: payOrderModel.prepayid??'',
packageValue: payOrderModel.package??'',
nonceStr: payOrderModel.noncestr??'',
timestamp: payOrderModel.timestamp!.toInt(),
sign: payOrderModel.sign??''
);
fluwx.pay(which: payment);
fluwx.addSubscriber((response) {
if (response.errCode == 0) {
requestOrderStatus();
}
else{
Toast.show('${response.errStr}');
}
});
} }
void requestOrderStatus() async {
final result = await ShopAPI.orderStatus(orderNumber: payOrderModel.ordersnum??'');
if (result){
Toast.show('订单支付完成');
}
}
} }
\ No newline at end of file
...@@ -10,8 +10,10 @@ import 'package:flutter_book/apis/index.dart'; ...@@ -10,8 +10,10 @@ import 'package:flutter_book/apis/index.dart';
import 'package:flutter_book/theme.dart'; import 'package:flutter_book/theme.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_slidable/flutter_slidable.dart'; import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:fluwx/fluwx.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import 'package:go_router/go_router.dart'; import 'package:go_router/go_router.dart';
import 'package:tobias/tobias.dart';
import '../../models/index.dart'; import '../../models/index.dart';
import '../../routes/index.dart'; import '../../routes/index.dart';
......
...@@ -87,10 +87,10 @@ class LoginController extends GetxController { ...@@ -87,10 +87,10 @@ class LoginController extends GetxController {
// 定时器回调 // 定时器回调
}); });
/// 测试账号 /// 测试账号
if (kDebugMode) { // if (kDebugMode) {
phoneInput.text = '13521054068'; // phoneInput.text = '13521054068';
passwordInput.text = '123456'; // passwordInput.text = '123456';
} // }
super.onInit(); super.onInit();
} }
......
...@@ -31,7 +31,7 @@ class _SplashPageState extends State<SplashPage> { ...@@ -31,7 +31,7 @@ class _SplashPageState extends State<SplashPage> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Scaffold( return Scaffold(
// extendBodyBehindAppBar: true, extendBodyBehindAppBar: true,
appBar: AppBar(), appBar: AppBar(),
body: const Column( body: const Column(
crossAxisAlignment: CrossAxisAlignment.stretch, crossAxisAlignment: CrossAxisAlignment.stretch,
......
...@@ -12,7 +12,7 @@ class BuildItem extends StatelessWidget { ...@@ -12,7 +12,7 @@ class BuildItem extends StatelessWidget {
return Container( return Container(
margin: EdgeInsets.only(left: 10.w,right: 10.w,top:10.w), margin: EdgeInsets.only(left: 10.w,right: 10.w,top:10.w),
padding: const EdgeInsets.symmetric(horizontal: 10,vertical: 10), padding: const EdgeInsets.symmetric(horizontal: 10,vertical: 10),
height: 75.w, // height: 75.w,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(8.w), borderRadius: BorderRadius.circular(8.w),
color: Colors.white color: Colors.white
......
part of web; part of web;
class ReadController extends FullLifeCycleController with GetSingleTickerProviderStateMixin{ class ReadController extends FullLifeCycleController with GetSingleTickerProviderStateMixin{
// 目录
List <ChapterModel> chapters = [];
// late final PageController pageController;
//
// //默认显示
// int currentPage = 1;
late AnimationController _controller; late AnimationController _controller;
bool _show = false; bool _show = true;
bool get show => _show; bool get show => _show;
void setShow(bool value) { void setShow(bool value) {
...@@ -15,7 +25,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide ...@@ -15,7 +25,7 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
} }
else { else {
/// 不显示状态栏 /// 不显示状态栏
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); // SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
/// 收回动画 /// 收回动画
_controller.reverse(); _controller.reverse();
} }
...@@ -28,8 +38,10 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide ...@@ -28,8 +38,10 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
@override @override
void onInit() { void onInit() {
// pageController = PageController(initialPage: currentPage);
/// 默认不显示状态栏 /// 默认不显示状态栏
SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky); // SystemChrome.setEnabledSystemUIMode(SystemUiMode.immersiveSticky);
/// 初始化 /// 初始化
_controller = AnimationController( _controller = AnimationController(
vsync: this, vsync: this,
...@@ -38,12 +50,24 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide ...@@ -38,12 +50,24 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
super.onInit(); super.onInit();
} }
@override
void onReady() {
_getChapters();
super.onReady();
}
@override @override
void onClose() { void onClose() {
_controller.dispose(); _controller.dispose();
super.onClose(); super.onClose();
} }
void onPageChanged(int page) {
// currentPage = page;
update(['navigation']);
}
void onResumed(){ void onResumed(){
print('onResumed'); print('onResumed');
} }
...@@ -56,4 +80,12 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide ...@@ -56,4 +80,12 @@ class ReadController extends FullLifeCycleController with GetSingleTickerProvide
void onDetached(){ void onDetached(){
print('onDetached'); print('onDetached');
} }
/// 获取目录信息
void _getChapters() async {
chapters = await LibraryAPI.chapters(bookId: '110');
update();
}
} }
\ No newline at end of file
part of web;
class DiscussController extends GetxController {
List<DiscussModel> discuss = [];
final EasyRefreshController refreshController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true,
);
final int _limit = 10;
int _page = 1;
bool _noMore = false;
@override
void onReady() {
onRefresh();
super.onReady();
}
@override
void onClose() {
refreshController.dispose();
super.onClose();
}
/// 获取讨论详情
Future<void> _getDiscuss([bool isRefresh = false]) async {
if (isRefresh) _page = 1;
// 网路请求
final result = await LibraryAPI.discussList(
page: _page,
limit: _limit,
bookId: '110',
chapterId: '1'
);
// 如果是刷新 清理数据
if (isRefresh) discuss.clear();
discuss.addAll(result);
_page ++;
_noMore = result.length < _limit;
update();
}
void onRefresh() async {
try {
await _getDiscuss(true);
refreshController.finishRefresh(IndicatorResult.success);
refreshController.resetFooter();
} catch (error) {
refreshController.finishRefresh(IndicatorResult.fail);
}
}
void onLoading() async {
if (_noMore) {
refreshController.finishLoad(IndicatorResult.noMore);
return;
}
try {
await _getDiscuss();
refreshController.finishLoad();
} catch (error) {
refreshController.finishLoad(IndicatorResult.fail);
}
}
}
\ No newline at end of file
library web; library web;
import 'package:easy_refresh/easy_refresh.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart'; import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:flutter_book/utils/index.dart'; import 'package:flutter_book/utils/index.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart'; import 'package:get/get.dart';
import '../../apis/index.dart';
import '../../models/index.dart';
import '../../widgets/index.dart';
import '../book_category/index.dart';
import '../user_discuss_des/index.dart';
import '../user_notes_des/index.dart';
part 'view.dart'; part 'view.dart';
part 'controller.dart'; part 'controller.dart';
part 'widgets/category.dart';
part 'widgets/discuss.dart';
part 'widgets/note.dart';
part 'widgets/book.dart';
part 'note_controller.dart';
part 'discuss_controller.dart';
part of web;
class NoteController extends GetxController {
List<NoteModel> notes = [];
final EasyRefreshController refreshController = EasyRefreshController(
controlFinishLoad: true,
controlFinishRefresh: true,
);
final int _limit = 10;
int _page = 1;
bool _noMore = false;
@override
void onReady() {
onRefresh();
super.onReady();
}
@override
void onClose() {
refreshController.dispose();
super.onClose();
}
/// 获取笔记列表
Future<void> _getNotes([bool isRefresh = false]) async {
if (isRefresh) _page = 1;
// 网路请求
final result = await LibraryAPI.noteList(
page: _page,
limit: _limit,
bookId: '110',
chapterId: '1'
);
// 如果是刷新 清理数据
if (isRefresh) notes.clear();
notes.addAll(result);
_page ++;
_noMore = result.length < _limit;
update();
}
void onRefresh() async {
try {
await _getNotes(true);
refreshController.finishRefresh(IndicatorResult.success);
refreshController.resetFooter();
} catch (error) {
refreshController.finishRefresh(IndicatorResult.fail);
}
}
void onLoading() async {
if (_noMore) {
refreshController.finishLoad(IndicatorResult.noMore);
return;
}
try {
await _getNotes();
refreshController.finishLoad();
} catch (error) {
refreshController.finishLoad(IndicatorResult.fail);
}
}
}
\ No newline at end of file
...@@ -8,6 +8,8 @@ class ReadPage extends StatefulWidget { ...@@ -8,6 +8,8 @@ class ReadPage extends StatefulWidget {
} }
class _ReadPageState extends State<ReadPage> { class _ReadPageState extends State<ReadPage> {
int currentIndex = 0;
final GlobalKey webViewKey = GlobalKey(); final GlobalKey webViewKey = GlobalKey();
InAppWebViewController? webViewController; InAppWebViewController? webViewController;
late ContextMenu contextMenu; late ContextMenu contextMenu;
...@@ -20,7 +22,7 @@ class _ReadPageState extends State<ReadPage> { ...@@ -20,7 +22,7 @@ class _ReadPageState extends State<ReadPage> {
return GetBuilder<ReadController>( return GetBuilder<ReadController>(
init: ReadController(), init: ReadController(),
builder: (readController) => Scaffold( builder: (readController) => Scaffold(
appBar: AppBar(title:const Text('阅读'),),
body: Container( body: Container(
color: Colors.white, color: Colors.white,
child: Stack( child: Stack(
...@@ -37,61 +39,6 @@ class _ReadPageState extends State<ReadPage> { ...@@ -37,61 +39,6 @@ class _ReadPageState extends State<ReadPage> {
onWebViewCreated: (InAppWebViewController controller) { onWebViewCreated: (InAppWebViewController controller) {
webViewController = controller; webViewController = controller;
}, },
// onLoadError: (InAppWebViewController controller, Uri url, int code ,String msg){
//
// },
contextMenu: ContextMenu(
menuItems: [
ContextMenuItem(title: '划线',androidId: 1,iosId: '1',action: (){
const snackBar = SnackBar(
content: Text("划线"),
duration: Duration(seconds: 1),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}),
ContextMenuItem(title: '提问',androidId: 2,iosId: '2',action: (){
}),
ContextMenuItem(title: '笔记',androidId: 3,iosId: '3',action: (){
}),
],
onCreateContextMenu: (hitTestResult) async {
String selectedText = await webViewController?.getSelectedText() ?? "";
final snackBar = SnackBar(
content: Text(
"Selected text: '$selectedText', of type: ${hitTestResult.type.toString()}"),
duration: const Duration(seconds: 1),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
},
// options: ContextMenuOptions(
// hideDefaultSystemContextMenuItems: true,
// ),
onContextMenuActionItemClicked: (ContextMenuItem menuItem) async {
final snackBar = SnackBar(
content: Text(
"Menu item with ID ${menuItem.iosId} and title '${menuItem.title}' clicked!"),
duration: const Duration(seconds: 1),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
// switch (item.title){
// case '划线':
// Console.log('----------划线-----------');
// break;
// case '提问':
// Console.log('----------提问-----------');
// break;
// case '笔记':
// Console.log('----------笔记-----------');
// break;
//
// }
}
),
onLoadStop: (controller, url) { onLoadStop: (controller, url) {
controller.addJavaScriptHandler(handlerName: 'onTap', callback: (args){ controller.addJavaScriptHandler(handlerName: 'onTap', callback: (args){
readController.setShow(readController.show); readController.setShow(readController.show);
...@@ -117,17 +64,61 @@ class _ReadPageState extends State<ReadPage> { ...@@ -117,17 +64,61 @@ class _ReadPageState extends State<ReadPage> {
child: Text('top View'), child: Text('top View'),
), ),
), ),
Positioned(
left: 0,
right: 0,
top: 0,
bottom: 49 + MediaQuery.of(context).viewInsets.bottom,
child: _showContent(readController,currentIndex)
),
AnimatedPositioned( AnimatedPositioned(
duration: readController.controller.duration!, duration: readController.controller.duration!,
curve: Curves.easeInOut, curve: Curves.easeInOut,
bottom: readController.show ? 0 : -100, // 负值隐藏,0 显示 bottom: readController.show ? 0 : -49 - MediaQuery.of(context).viewInsets.bottom, // 负值隐藏,0 显示
left: 0, left: 0,
right: 0, right: 0,
height: 100, height: 49,
child: Container( child: Container(
color: Colors.limeAccent, color: Colors.limeAccent,
alignment: Alignment.center, alignment: Alignment.center,
child: Text('Bottom View'), child: BottomNavigationBar(
currentIndex: currentIndex,
onTap: (index){
setState(() {
currentIndex = index;
});
// _showBottomSheet(context, index);
},
items: [
BottomNavigationBarItem(
label: '目录',
icon: Image.asset(
'assets/images/category_unselect.png',
),
activeIcon: Image.asset(
'assets/images/category_select.png',
),
),
BottomNavigationBarItem(
label: '笔记',
icon: Image.asset(
'assets/images/note_unselect.png',
),
activeIcon: Image.asset(
'assets/images/note_select.png',
)
),
BottomNavigationBarItem(
label: '讨论',
icon: Image.asset(
'assets/images/discuss_unselect.png',
),
activeIcon: Image.asset(
'assets/images/discuss_select.png',
)
),
],
)
), ),
), ),
...@@ -138,4 +129,52 @@ class _ReadPageState extends State<ReadPage> { ...@@ -138,4 +129,52 @@ class _ReadPageState extends State<ReadPage> {
); );
} }
Widget _showContent(ReadController controller,int index) {
print('++++++++++++++++++++++++$index');
if (controller.show){
if (index == 0){
return Container(
color: Color(0xFF000000).withOpacity(0.5),
padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.2),
child: ClipRRect(
borderRadius: BorderRadius.only(topRight: Radius.circular(8.w),topLeft: Radius.circular(8.w)),
child: Container(
color: Colors.white,
child: ReadCategoryPage(controller: controller,),
),
),
// child: ReadCategoryPage(),
);
}
else if (index == 1){
return Container(
color: Color(0xFF000000).withOpacity(0.5),
padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.2),
child: ClipRRect(
borderRadius: BorderRadius.only(topRight: Radius.circular(8.w),topLeft: Radius.circular(8.w)),
child: Container(
color: Colors.white,
child: ReadNotePage(),
),
),
// child: ReadCategoryPage(),
);
}
else if (index == 2){
return Container(
color: Color(0xFF000000).withOpacity(0.5),
padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.2),
child: ClipRRect(
borderRadius: BorderRadius.only(topRight: Radius.circular(8.w),topLeft: Radius.circular(8.w)),
child: Container(
color: Colors.white,
child: ReadNotePage(),
),
),
// child: ReadCategoryPage(),
);
}
}
return const SizedBox();
}
} }
part of web;
class BuildBook extends StatelessWidget {
const BuildBook({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.symmetric(horizontal: 15.w),
child: Column(
children: [
Container(
padding: EdgeInsets.only(top: 12.w,bottom: 15.w),
// color: Colors.red,
child: Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
CustomCard(
width: 72.w,
height: 86.w,
url: '',
),
Container(
height: 87.w,
margin: EdgeInsets.only(left: 13.w),
// color: Colors.green,
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('书名',style: TextStyle(fontSize: 14.w,height: 1.5,fontWeight: Fonts.medium,color: Colours.c3),),
Text('作者',style: TextStyle(fontSize: 12.w,height: 1.5,color: Colours.c6),),
],
),
],
),
)
],
),
)
],
),
);
}
}
part of web;
class ReadCategoryPage extends StatefulWidget {
final ReadController controller;
const ReadCategoryPage({
Key? key,
required this.controller,
}) : super(key: key);
@override
State<ReadCategoryPage> createState() => _ReadCategoryPageState();
}
class _ReadCategoryPageState extends State<ReadCategoryPage> {
late TextEditingController searchController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: false,
body: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
margin: EdgeInsets.only(left: 15.w,right: 15.w,top: 15.w,bottom: 15.w),
child: Image.asset('assets/images/close.png')
),
Container(
margin: EdgeInsets.only(left: 15.w,right: 15.w,),
decoration: BoxDecoration(
color: const Color(0xFFF9F9F9),
borderRadius: BorderRadius.circular(17.5.w),
boxShadow: [
BoxShadow(
color: const Color(0xFFC7C7C7).withOpacity(0.5),
offset: Offset(3.w, 0),
blurRadius: 10.w,
spreadRadius: 0.w,
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(17.5.w),
child: CustomInputSearch(
controller: searchController,
readOnly: false,
hintText: '请输入书籍名称',
onTap: () {
// context.pushNamed(Routes.msgs);
},
onEditingComplete: () {
},
),
),
),
BuildBook(),
// Expanded(
// child: ListView.builder(
// itemBuilder:(BuildContext context, int index){
// return BuildItem(model: widget.controller.chapters[index],);
// },
// itemCount: widget.controller.chapters.length,
// ),
// ),
],
),
);
}
}
part of web;
class ReadDiscussPage extends StatefulWidget {
const ReadDiscussPage({Key? key}) : super(key: key);
@override
State<ReadDiscussPage> createState() => _ReadDiscussPageState();
}
class _ReadDiscussPageState extends State<ReadDiscussPage> {
late TextEditingController searchController = TextEditingController();
@override
Widget build(BuildContext context) {
return GetBuilder<DiscussController>(
init: DiscussController(),
builder:(controller) => Scaffold(
resizeToAvoidBottomInset: false,
body: Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
margin: EdgeInsets.only(left: 15.w,right: 15.w,top: 15.w,bottom: 15.w),
child: Image.asset('assets/images/close.png')
),
Container(
margin: EdgeInsets.only(left: 15.w,right: 15.w,),
decoration: BoxDecoration(
color: const Color(0xFFF9F9F9),
borderRadius: BorderRadius.circular(17.5.w),
boxShadow: [
BoxShadow(
color: const Color(0xFFC7C7C7).withOpacity(0.5),
offset: Offset(3.w, 0),
blurRadius: 10.w,
spreadRadius: 0.w,
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(17.5.w),
child: CustomInputSearch(
controller: searchController,
readOnly: false,
hintText: '请输入书籍名称',
onTap: () {
// context.pushNamed(Routes.msgs);
},
onEditingComplete: () {
},
),
),
),
BuildBook(),
ListView.builder(
itemBuilder: (BuildContext context,int index){
DiscussModel model = controller.discuss[index];
return BuildDiscuss(model: model,);
},
itemCount: controller.discuss.length,
)
],
),
),
);
}
}
part of web;
class ReadNotePage extends StatefulWidget {
const ReadNotePage({Key? key}) : super(key: key);
@override
State<ReadNotePage> createState() => _ReadNotePageState();
}
class _ReadNotePageState extends State<ReadNotePage> {
late TextEditingController searchController = TextEditingController();
@override
Widget build(BuildContext context) {
return GetBuilder<NoteController>(
init: NoteController(),
builder:(controller) =>Column(
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Container(
margin: EdgeInsets.only(left: 15.w,right: 15.w,top: 15.w,bottom: 15.w),
child: Image.asset('assets/images/close.png')
),
Container(
margin: EdgeInsets.only(left: 15.w,right: 15.w,),
decoration: BoxDecoration(
color: const Color(0xFFF9F9F9),
borderRadius: BorderRadius.circular(17.5.w),
boxShadow: [
BoxShadow(
color: const Color(0xFFC7C7C7).withOpacity(0.5),
offset: Offset(3.w, 0),
blurRadius: 10.w,
spreadRadius: 0.w,
),
],
),
child: ClipRRect(
borderRadius: BorderRadius.circular(17.5.w),
child: CustomInputSearch(
controller: searchController,
readOnly: false,
hintText: '请输入书籍名称',
onTap: () {
// context.pushNamed(Routes.msgs);
},
onEditingComplete: () {
},
),
),
),
BuildBook(),
Expanded(
child: ListView.builder(
itemBuilder: (BuildContext context,int index){
NoteModel model = controller.notes[index];
// 划线
if(model.types == 1){
return BuildLine(model: model,);
}
// 高亮
else if(model.types == 2){
return BuildHigh(model: model,);
}
// 笔记
else if(model.types == 3){
return BuildNote(model: model,);
}
},
itemCount: controller.notes.length,
),
),
],
),
);
}
}
...@@ -6,7 +6,7 @@ packages: ...@@ -6,7 +6,7 @@ packages:
description: description:
name: async name: async
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.11.0" version: "2.11.0"
audio_session: audio_session:
...@@ -14,7 +14,7 @@ packages: ...@@ -14,7 +14,7 @@ packages:
description: description:
name: audio_session name: audio_session
sha256: "6fdf255ed3af86535c96452c33ecff1245990bb25a605bfb1958661ccc3d467f" sha256: "6fdf255ed3af86535c96452c33ecff1245990bb25a605bfb1958661ccc3d467f"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.1.18" version: "0.1.18"
azlistview: azlistview:
...@@ -22,7 +22,7 @@ packages: ...@@ -22,7 +22,7 @@ packages:
description: description:
name: azlistview name: azlistview
sha256: "93e865f11777a271b439f0d6b00799c0797e9daeec2e082a2e01373809c4b90d" sha256: "93e865f11777a271b439f0d6b00799c0797e9daeec2e082a2e01373809c4b90d"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.0" version: "2.0.0"
badges: badges:
...@@ -30,7 +30,7 @@ packages: ...@@ -30,7 +30,7 @@ packages:
description: description:
name: badges name: badges
sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84 sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
boolean_selector: boolean_selector:
...@@ -38,7 +38,7 @@ packages: ...@@ -38,7 +38,7 @@ packages:
description: description:
name: boolean_selector name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
carousel_slider: carousel_slider:
...@@ -46,7 +46,7 @@ packages: ...@@ -46,7 +46,7 @@ packages:
description: description:
name: carousel_slider name: carousel_slider
sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42" sha256: "9c695cc963bf1d04a47bd6021f68befce8970bcd61d24938e1fb0918cf5d9c42"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.2.1" version: "4.2.1"
characters: characters:
...@@ -54,7 +54,7 @@ packages: ...@@ -54,7 +54,7 @@ packages:
description: description:
name: characters name: characters
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
clock: clock:
...@@ -62,7 +62,7 @@ packages: ...@@ -62,7 +62,7 @@ packages:
description: description:
name: clock name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.1" version: "1.1.1"
collection: collection:
...@@ -70,7 +70,7 @@ packages: ...@@ -70,7 +70,7 @@ packages:
description: description:
name: collection name: collection
sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.17.1" version: "1.17.1"
convert: convert:
...@@ -78,7 +78,7 @@ packages: ...@@ -78,7 +78,7 @@ packages:
description: description:
name: convert name: convert
sha256: f08428ad63615f96a27e34221c65e1a451439b5f26030f78d790f461c686d65d sha256: f08428ad63615f96a27e34221c65e1a451439b5f26030f78d790f461c686d65d
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
cross_file: cross_file:
...@@ -86,7 +86,7 @@ packages: ...@@ -86,7 +86,7 @@ packages:
description: description:
name: cross_file name: cross_file
sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.3.3+7" version: "0.3.3+7"
crypto: crypto:
...@@ -94,7 +94,7 @@ packages: ...@@ -94,7 +94,7 @@ packages:
description: description:
name: crypto name: crypto
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.3" version: "3.0.3"
cupertino_icons: cupertino_icons:
...@@ -102,7 +102,7 @@ packages: ...@@ -102,7 +102,7 @@ packages:
description: description:
name: cupertino_icons name: cupertino_icons
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.6" version: "1.0.6"
decimal: decimal:
...@@ -110,7 +110,7 @@ packages: ...@@ -110,7 +110,7 @@ packages:
description: description:
name: decimal name: decimal
sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21" sha256: "24a261d5d5c87e86c7651c417a5dbdf8bcd7080dd592533910e8d0505a279f21"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.3.3" version: "2.3.3"
dio: dio:
...@@ -118,7 +118,7 @@ packages: ...@@ -118,7 +118,7 @@ packages:
description: description:
name: dio name: dio
sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7" sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.3.3" version: "5.3.3"
easy_refresh: easy_refresh:
...@@ -126,7 +126,7 @@ packages: ...@@ -126,7 +126,7 @@ packages:
description: description:
name: easy_refresh name: easy_refresh
sha256: "77b025ea49f27b5ebc5eef40a6678be52564c293bd97ce91a4088d6646478329" sha256: "77b025ea49f27b5ebc5eef40a6678be52564c293bd97ce91a4088d6646478329"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.3.2+1" version: "3.3.2+1"
extended_image: extended_image:
...@@ -134,7 +134,7 @@ packages: ...@@ -134,7 +134,7 @@ packages:
description: description:
name: extended_image name: extended_image
sha256: e77d18f956649ba6e5ecebd0cb68542120886336a75ee673788145bd4c3f0767 sha256: e77d18f956649ba6e5ecebd0cb68542120886336a75ee673788145bd4c3f0767
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "8.0.2" version: "8.0.2"
extended_image_library: extended_image_library:
...@@ -142,7 +142,7 @@ packages: ...@@ -142,7 +142,7 @@ packages:
description: description:
name: extended_image_library name: extended_image_library
sha256: bb8d08c504ebc73d476ec1c99451a61f12e95538869e734fc4f55a3a2d5c98ec sha256: bb8d08c504ebc73d476ec1c99451a61f12e95538869e734fc4f55a3a2d5c98ec
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.5.3" version: "3.5.3"
fake_async: fake_async:
...@@ -150,7 +150,7 @@ packages: ...@@ -150,7 +150,7 @@ packages:
description: description:
name: fake_async name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.1" version: "1.3.1"
ffi: ffi:
...@@ -158,7 +158,7 @@ packages: ...@@ -158,7 +158,7 @@ packages:
description: description:
name: ffi name: ffi
sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.0" version: "2.1.0"
file: file:
...@@ -166,7 +166,7 @@ packages: ...@@ -166,7 +166,7 @@ packages:
description: description:
name: file name: file
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "7.0.0" version: "7.0.0"
flutter: flutter:
...@@ -179,7 +179,7 @@ packages: ...@@ -179,7 +179,7 @@ packages:
description: description:
name: flutter_app_update name: flutter_app_update
sha256: "2202e6e6d49eacc571304e5a6a5404f893382b492029d01d33b3bfb9af1c2f25" sha256: "2202e6e6d49eacc571304e5a6a5404f893382b492029d01d33b3bfb9af1c2f25"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.4" version: "3.0.4"
flutter_easyloading: flutter_easyloading:
...@@ -187,7 +187,7 @@ packages: ...@@ -187,7 +187,7 @@ packages:
description: description:
name: flutter_easyloading name: flutter_easyloading
sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.5" version: "3.0.5"
flutter_inappwebview: flutter_inappwebview:
...@@ -195,7 +195,7 @@ packages: ...@@ -195,7 +195,7 @@ packages:
description: description:
name: flutter_inappwebview name: flutter_inappwebview
sha256: d198297060d116b94048301ee6749cd2e7d03c1f2689783f52d210a6b7aba350 sha256: d198297060d116b94048301ee6749cd2e7d03c1f2689783f52d210a6b7aba350
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.8.0" version: "5.8.0"
flutter_lints: flutter_lints:
...@@ -203,7 +203,7 @@ packages: ...@@ -203,7 +203,7 @@ packages:
description: description:
name: flutter_lints name: flutter_lints
sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.3" version: "2.0.3"
flutter_localizations: flutter_localizations:
...@@ -216,7 +216,7 @@ packages: ...@@ -216,7 +216,7 @@ packages:
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.17" version: "2.0.17"
flutter_screenutil: flutter_screenutil:
...@@ -224,7 +224,7 @@ packages: ...@@ -224,7 +224,7 @@ packages:
description: description:
name: flutter_screenutil name: flutter_screenutil
sha256: b3e155ee4f2cf5b21a2e15182d1c49c848147ed47f62083fc9a9beccb85f59f9 sha256: b3e155ee4f2cf5b21a2e15182d1c49c848147ed47f62083fc9a9beccb85f59f9
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.8.2" version: "5.8.2"
flutter_slidable: flutter_slidable:
...@@ -232,7 +232,7 @@ packages: ...@@ -232,7 +232,7 @@ packages:
description: description:
name: flutter_slidable name: flutter_slidable
sha256: "19ed4813003a6ff4e9c6bcce37e792a2a358919d7603b2b31ff200229191e44c" sha256: "19ed4813003a6ff4e9c6bcce37e792a2a358919d7603b2b31ff200229191e44c"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.1" version: "3.0.1"
flutter_sound: flutter_sound:
...@@ -240,7 +240,7 @@ packages: ...@@ -240,7 +240,7 @@ packages:
description: description:
name: flutter_sound name: flutter_sound
sha256: "090a4694b11ecc744c2010621c4ffc5fe7c3079d304ea014961a72c7b72cfe6c" sha256: "090a4694b11ecc744c2010621c4ffc5fe7c3079d304ea014961a72c7b72cfe6c"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "9.2.13" version: "9.2.13"
flutter_sound_platform_interface: flutter_sound_platform_interface:
...@@ -248,7 +248,7 @@ packages: ...@@ -248,7 +248,7 @@ packages:
description: description:
name: flutter_sound_platform_interface name: flutter_sound_platform_interface
sha256: "4537eaeb58a32748c42b621ad6116f7f4c6ee0a8d6ffaa501b165fe1c9df4753" sha256: "4537eaeb58a32748c42b621ad6116f7f4c6ee0a8d6ffaa501b165fe1c9df4753"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "9.2.13" version: "9.2.13"
flutter_sound_web: flutter_sound_web:
...@@ -256,7 +256,7 @@ packages: ...@@ -256,7 +256,7 @@ packages:
description: description:
name: flutter_sound_web name: flutter_sound_web
sha256: ad4ca92671a1879e1f613e900bbbdb8170b20d57d1e4e6363018fe56b055594f sha256: ad4ca92671a1879e1f613e900bbbdb8170b20d57d1e4e6363018fe56b055594f
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "9.2.13" version: "9.2.13"
flutter_spinkit: flutter_spinkit:
...@@ -264,7 +264,7 @@ packages: ...@@ -264,7 +264,7 @@ packages:
description: description:
name: flutter_spinkit name: flutter_spinkit
sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.2.0" version: "5.2.0"
flutter_star: flutter_star:
...@@ -272,7 +272,7 @@ packages: ...@@ -272,7 +272,7 @@ packages:
description: description:
name: flutter_star name: flutter_star
sha256: "7dc10b8b3667ace2aa575a37ea0c00558a7514019cfe7e76322573d85b72a472" sha256: "7dc10b8b3667ace2aa575a37ea0c00558a7514019cfe7e76322573d85b72a472"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
flutter_test: flutter_test:
...@@ -285,7 +285,7 @@ packages: ...@@ -285,7 +285,7 @@ packages:
description: description:
name: flutter_tts name: flutter_tts
sha256: cbb3fd43b946e62398560235469e6113e4fe26c40eab1b7cb5e7c417503fb3a8 sha256: cbb3fd43b946e62398560235469e6113e4fe26c40eab1b7cb5e7c417503fb3a8
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.8.5" version: "3.8.5"
flutter_web_plugins: flutter_web_plugins:
...@@ -298,7 +298,7 @@ packages: ...@@ -298,7 +298,7 @@ packages:
description: description:
name: fluwx name: fluwx
sha256: "7a1596e8fad1b2191cf62f4cc80f3c63c01306bd6d8fa4f5c815f5e309da1dba" sha256: "7a1596e8fad1b2191cf62f4cc80f3c63c01306bd6d8fa4f5c815f5e309da1dba"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.4.9" version: "4.4.9"
get: get:
...@@ -306,7 +306,7 @@ packages: ...@@ -306,7 +306,7 @@ packages:
description: description:
name: get name: get
sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a" sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.6.5" version: "4.6.5"
go_router: go_router:
...@@ -314,7 +314,7 @@ packages: ...@@ -314,7 +314,7 @@ packages:
description: description:
name: go_router name: go_router
sha256: "2aa884667eeda3a1c461f31e72af1f77984ab0f29450d8fb12ec1f7bc53eea14" sha256: "2aa884667eeda3a1c461f31e72af1f77984ab0f29450d8fb12ec1f7bc53eea14"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "10.1.0" version: "10.1.0"
http: http:
...@@ -322,7 +322,7 @@ packages: ...@@ -322,7 +322,7 @@ packages:
description: description:
name: http name: http
sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
http_client_helper: http_client_helper:
...@@ -330,7 +330,7 @@ packages: ...@@ -330,7 +330,7 @@ packages:
description: description:
name: http_client_helper name: http_client_helper
sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1" sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.0" version: "3.0.0"
http_parser: http_parser:
...@@ -338,7 +338,7 @@ packages: ...@@ -338,7 +338,7 @@ packages:
description: description:
name: http_parser name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.0.2" version: "4.0.2"
image_picker: image_picker:
...@@ -346,7 +346,7 @@ packages: ...@@ -346,7 +346,7 @@ packages:
description: description:
name: image_picker name: image_picker
sha256: "9978d3510af4e6a902e545ce19229b926e6de6a1828d6134d3aab2e129a4d270" sha256: "9978d3510af4e6a902e545ce19229b926e6de6a1828d6134d3aab2e129a4d270"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.8.7+5" version: "0.8.7+5"
image_picker_android: image_picker_android:
...@@ -354,7 +354,7 @@ packages: ...@@ -354,7 +354,7 @@ packages:
description: description:
name: image_picker_android name: image_picker_android
sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.8.9+3" version: "0.8.9+3"
image_picker_for_web: image_picker_for_web:
...@@ -362,7 +362,7 @@ packages: ...@@ -362,7 +362,7 @@ packages:
description: description:
name: image_picker_for_web name: image_picker_for_web
sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.0" version: "2.2.0"
image_picker_ios: image_picker_ios:
...@@ -370,7 +370,7 @@ packages: ...@@ -370,7 +370,7 @@ packages:
description: description:
name: image_picker_ios name: image_picker_ios
sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3 sha256: fadafce49e8569257a0cad56d24438a6fa1f0cbd7ee0af9b631f7492818a4ca3
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.8.9+1" version: "0.8.9+1"
image_picker_platform_interface: image_picker_platform_interface:
...@@ -378,7 +378,7 @@ packages: ...@@ -378,7 +378,7 @@ packages:
description: description:
name: image_picker_platform_interface name: image_picker_platform_interface
sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b sha256: fa4e815e6fcada50e35718727d83ba1c92f1edf95c0b4436554cec301b56233b
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.9.3" version: "2.9.3"
intl: intl:
...@@ -386,7 +386,7 @@ packages: ...@@ -386,7 +386,7 @@ packages:
description: description:
name: intl name: intl
sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.18.0" version: "0.18.0"
ionicons: ionicons:
...@@ -394,7 +394,7 @@ packages: ...@@ -394,7 +394,7 @@ packages:
description: description:
name: ionicons name: ionicons
sha256: "5496bc65a16115ecf05b15b78f494ee4a8869504357668f0a11d689e970523cf" sha256: "5496bc65a16115ecf05b15b78f494ee4a8869504357668f0a11d689e970523cf"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.2.2" version: "0.2.2"
js: js:
...@@ -402,7 +402,7 @@ packages: ...@@ -402,7 +402,7 @@ packages:
description: description:
name: js name: js
sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.6.7" version: "0.6.7"
lints: lints:
...@@ -410,7 +410,7 @@ packages: ...@@ -410,7 +410,7 @@ packages:
description: description:
name: lints name: lints
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
logger: logger:
...@@ -418,7 +418,7 @@ packages: ...@@ -418,7 +418,7 @@ packages:
description: description:
name: logger name: logger
sha256: db2ff852ed77090ba9f62d3611e4208a3d11dfa35991a81ae724c113fcb3e3f7 sha256: db2ff852ed77090ba9f62d3611e4208a3d11dfa35991a81ae724c113fcb3e3f7
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.0" version: "1.3.0"
logging: logging:
...@@ -426,7 +426,7 @@ packages: ...@@ -426,7 +426,7 @@ packages:
description: description:
name: logging name: logging
sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
matcher: matcher:
...@@ -434,7 +434,7 @@ packages: ...@@ -434,7 +434,7 @@ packages:
description: description:
name: matcher name: matcher
sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.12.15" version: "0.12.15"
material_color_utilities: material_color_utilities:
...@@ -442,7 +442,7 @@ packages: ...@@ -442,7 +442,7 @@ packages:
description: description:
name: material_color_utilities name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.2.0" version: "0.2.0"
meta: meta:
...@@ -450,7 +450,7 @@ packages: ...@@ -450,7 +450,7 @@ packages:
description: description:
name: meta name: meta
sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.9.1" version: "1.9.1"
mime: mime:
...@@ -458,7 +458,7 @@ packages: ...@@ -458,7 +458,7 @@ packages:
description: description:
name: mime name: mime
sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.4" version: "1.0.4"
nested: nested:
...@@ -466,7 +466,7 @@ packages: ...@@ -466,7 +466,7 @@ packages:
description: description:
name: nested name: nested
sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.0" version: "1.0.0"
oktoast: oktoast:
...@@ -474,7 +474,7 @@ packages: ...@@ -474,7 +474,7 @@ packages:
description: description:
name: oktoast name: oktoast
sha256: f1366c5c793ddfb8f55bc6fc3e45db43c45debf173b765fb4c5ec096cbdeb84a sha256: f1366c5c793ddfb8f55bc6fc3e45db43c45debf173b765fb4c5ec096cbdeb84a
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.4.0" version: "3.4.0"
package_info_plus: package_info_plus:
...@@ -482,7 +482,7 @@ packages: ...@@ -482,7 +482,7 @@ packages:
description: description:
name: package_info_plus name: package_info_plus
sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.2.0" version: "4.2.0"
package_info_plus_platform_interface: package_info_plus_platform_interface:
...@@ -490,7 +490,7 @@ packages: ...@@ -490,7 +490,7 @@ packages:
description: description:
name: package_info_plus_platform_interface name: package_info_plus_platform_interface
sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
path: path:
...@@ -498,7 +498,7 @@ packages: ...@@ -498,7 +498,7 @@ packages:
description: description:
name: path name: path
sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.8.3" version: "1.8.3"
path_drawing: path_drawing:
...@@ -506,7 +506,7 @@ packages: ...@@ -506,7 +506,7 @@ packages:
description: description:
name: path_drawing name: path_drawing
sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
path_parsing: path_parsing:
...@@ -514,7 +514,7 @@ packages: ...@@ -514,7 +514,7 @@ packages:
description: description:
name: path_parsing name: path_parsing
sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.1" version: "1.0.1"
path_provider: path_provider:
...@@ -522,7 +522,7 @@ packages: ...@@ -522,7 +522,7 @@ packages:
description: description:
name: path_provider name: path_provider
sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.2" version: "2.1.2"
path_provider_android: path_provider_android:
...@@ -530,7 +530,7 @@ packages: ...@@ -530,7 +530,7 @@ packages:
description: description:
name: path_provider_android name: path_provider_android
sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.2" version: "2.2.2"
path_provider_foundation: path_provider_foundation:
...@@ -538,7 +538,7 @@ packages: ...@@ -538,7 +538,7 @@ packages:
description: description:
name: path_provider_foundation name: path_provider_foundation
sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.3.2" version: "2.3.2"
path_provider_linux: path_provider_linux:
...@@ -546,7 +546,7 @@ packages: ...@@ -546,7 +546,7 @@ packages:
description: description:
name: path_provider_linux name: path_provider_linux
sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
path_provider_platform_interface: path_provider_platform_interface:
...@@ -554,7 +554,7 @@ packages: ...@@ -554,7 +554,7 @@ packages:
description: description:
name: path_provider_platform_interface name: path_provider_platform_interface
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.2" version: "2.1.2"
path_provider_windows: path_provider_windows:
...@@ -562,7 +562,7 @@ packages: ...@@ -562,7 +562,7 @@ packages:
description: description:
name: path_provider_windows name: path_provider_windows
sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
permission_handler: permission_handler:
...@@ -570,7 +570,7 @@ packages: ...@@ -570,7 +570,7 @@ packages:
description: description:
name: permission_handler name: permission_handler
sha256: "284a66179cabdf942f838543e10413246f06424d960c92ba95c84439154fcac8" sha256: "284a66179cabdf942f838543e10413246f06424d960c92ba95c84439154fcac8"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "11.0.1" version: "11.0.1"
permission_handler_android: permission_handler_android:
...@@ -578,7 +578,7 @@ packages: ...@@ -578,7 +578,7 @@ packages:
description: description:
name: permission_handler_android name: permission_handler_android
sha256: f9fddd3b46109bd69ff3f9efa5006d2d309b7aec0f3c1c5637a60a2d5659e76e sha256: f9fddd3b46109bd69ff3f9efa5006d2d309b7aec0f3c1c5637a60a2d5659e76e
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "11.1.0" version: "11.1.0"
permission_handler_apple: permission_handler_apple:
...@@ -586,7 +586,7 @@ packages: ...@@ -586,7 +586,7 @@ packages:
description: description:
name: permission_handler_apple name: permission_handler_apple
sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "9.1.4" version: "9.1.4"
permission_handler_platform_interface: permission_handler_platform_interface:
...@@ -594,7 +594,7 @@ packages: ...@@ -594,7 +594,7 @@ packages:
description: description:
name: permission_handler_platform_interface name: permission_handler_platform_interface
sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4" sha256: "6760eb5ef34589224771010805bea6054ad28453906936f843a8cc4d3a55c4a4"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.12.0" version: "3.12.0"
permission_handler_windows: permission_handler_windows:
...@@ -602,7 +602,7 @@ packages: ...@@ -602,7 +602,7 @@ packages:
description: description:
name: permission_handler_windows name: permission_handler_windows
sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.1.3" version: "0.1.3"
platform: platform:
...@@ -610,7 +610,7 @@ packages: ...@@ -610,7 +610,7 @@ packages:
description: description:
name: platform name: platform
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.1.4" version: "3.1.4"
plugin_platform_interface: plugin_platform_interface:
...@@ -618,7 +618,7 @@ packages: ...@@ -618,7 +618,7 @@ packages:
description: description:
name: plugin_platform_interface name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.8" version: "2.1.8"
provider: provider:
...@@ -626,7 +626,7 @@ packages: ...@@ -626,7 +626,7 @@ packages:
description: description:
name: provider name: provider
sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096" sha256: "9a96a0a19b594dbc5bf0f1f27d2bc67d5f95957359b461cd9feb44ed6ae75096"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "6.1.1" version: "6.1.1"
pull_to_refresh_flutter3: pull_to_refresh_flutter3:
...@@ -634,7 +634,7 @@ packages: ...@@ -634,7 +634,7 @@ packages:
description: description:
name: pull_to_refresh_flutter3 name: pull_to_refresh_flutter3
sha256: "223a6241067162dc15cf8c46c05af998ce7aa85e0703d8f696101eb1b5629d76" sha256: "223a6241067162dc15cf8c46c05af998ce7aa85e0703d8f696101eb1b5629d76"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.0.1" version: "2.0.1"
rational: rational:
...@@ -642,7 +642,7 @@ packages: ...@@ -642,7 +642,7 @@ packages:
description: description:
name: rational name: rational
sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf sha256: ba58e9e18df9abde280e8b10051e4bce85091e41e8e7e411b6cde2e738d357cf
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.2" version: "2.2.2"
recase: recase:
...@@ -650,7 +650,7 @@ packages: ...@@ -650,7 +650,7 @@ packages:
description: description:
name: recase name: recase
sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213 sha256: e4eb4ec2dcdee52dcf99cb4ceabaffc631d7424ee55e56f280bc039737f89213
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "4.1.0" version: "4.1.0"
rxdart: rxdart:
...@@ -658,7 +658,7 @@ packages: ...@@ -658,7 +658,7 @@ packages:
description: description:
name: rxdart name: rxdart
sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.27.7" version: "0.27.7"
scrollable_positioned_list: scrollable_positioned_list:
...@@ -666,7 +666,7 @@ packages: ...@@ -666,7 +666,7 @@ packages:
description: description:
name: scrollable_positioned_list name: scrollable_positioned_list
sha256: "9566352ab9ba05794ee6c8864f154afba5d36c5637d0e3e32c615ba4ceb92772" sha256: "9566352ab9ba05794ee6c8864f154afba5d36c5637d0e3e32c615ba4ceb92772"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.2.3" version: "0.2.3"
shared_preferences: shared_preferences:
...@@ -674,7 +674,7 @@ packages: ...@@ -674,7 +674,7 @@ packages:
description: description:
name: shared_preferences name: shared_preferences
sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022" sha256: "16d3fb6b3692ad244a695c0183fca18cf81fd4b821664394a781de42386bf022"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
shared_preferences_android: shared_preferences_android:
...@@ -682,7 +682,7 @@ packages: ...@@ -682,7 +682,7 @@ packages:
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
shared_preferences_foundation: shared_preferences_foundation:
...@@ -690,7 +690,7 @@ packages: ...@@ -690,7 +690,7 @@ packages:
description: description:
name: shared_preferences_foundation name: shared_preferences_foundation
sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.3.5" version: "2.3.5"
shared_preferences_linux: shared_preferences_linux:
...@@ -698,7 +698,7 @@ packages: ...@@ -698,7 +698,7 @@ packages:
description: description:
name: shared_preferences_linux name: shared_preferences_linux
sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.3.2" version: "2.3.2"
shared_preferences_platform_interface: shared_preferences_platform_interface:
...@@ -706,7 +706,7 @@ packages: ...@@ -706,7 +706,7 @@ packages:
description: description:
name: shared_preferences_platform_interface name: shared_preferences_platform_interface
sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.3.2" version: "2.3.2"
shared_preferences_web: shared_preferences_web:
...@@ -714,7 +714,7 @@ packages: ...@@ -714,7 +714,7 @@ packages:
description: description:
name: shared_preferences_web name: shared_preferences_web
sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.2.1" version: "2.2.1"
shared_preferences_windows: shared_preferences_windows:
...@@ -722,7 +722,7 @@ packages: ...@@ -722,7 +722,7 @@ packages:
description: description:
name: shared_preferences_windows name: shared_preferences_windows
sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.3.2" version: "2.3.2"
sky_engine: sky_engine:
...@@ -735,7 +735,7 @@ packages: ...@@ -735,7 +735,7 @@ packages:
description: description:
name: source_span name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.9.1" version: "1.9.1"
stack_trace: stack_trace:
...@@ -743,7 +743,7 @@ packages: ...@@ -743,7 +743,7 @@ packages:
description: description:
name: stack_trace name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.11.0" version: "1.11.0"
stream_channel: stream_channel:
...@@ -751,7 +751,7 @@ packages: ...@@ -751,7 +751,7 @@ packages:
description: description:
name: stream_channel name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.1" version: "2.1.1"
string_scanner: string_scanner:
...@@ -759,7 +759,7 @@ packages: ...@@ -759,7 +759,7 @@ packages:
description: description:
name: string_scanner name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.0" version: "1.2.0"
synchronized: synchronized:
...@@ -767,7 +767,7 @@ packages: ...@@ -767,7 +767,7 @@ packages:
description: description:
name: synchronized name: synchronized
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.1.0+1" version: "3.1.0+1"
term_glyph: term_glyph:
...@@ -775,7 +775,7 @@ packages: ...@@ -775,7 +775,7 @@ packages:
description: description:
name: term_glyph name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.2.1" version: "1.2.1"
test_api: test_api:
...@@ -783,15 +783,23 @@ packages: ...@@ -783,15 +783,23 @@ packages:
description: description:
name: test_api name: test_api
sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "0.5.1" version: "0.5.1"
tobias:
dependency: "direct main"
description:
name: tobias
sha256: "16cad7d60e910fa45498dacb852f393b065d4d0fce7feff4db43159d745c7c6e"
url: "https://pub.flutter-io.cn"
source: hosted
version: "3.3.0"
typed_data: typed_data:
dependency: transitive dependency: transitive
description: description:
name: typed_data name: typed_data
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.3.2" version: "1.3.2"
uuid: uuid:
...@@ -799,7 +807,7 @@ packages: ...@@ -799,7 +807,7 @@ packages:
description: description:
name: uuid name: uuid
sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "3.0.7" version: "3.0.7"
vector_math: vector_math:
...@@ -807,7 +815,7 @@ packages: ...@@ -807,7 +815,7 @@ packages:
description: description:
name: vector_math name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "2.1.4" version: "2.1.4"
win32: win32:
...@@ -815,7 +823,7 @@ packages: ...@@ -815,7 +823,7 @@ packages:
description: description:
name: win32 name: win32
sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3"
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "5.0.9" version: "5.0.9"
xdg_directories: xdg_directories:
...@@ -823,7 +831,7 @@ packages: ...@@ -823,7 +831,7 @@ packages:
description: description:
name: xdg_directories name: xdg_directories
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
url: "https://pub.dev" url: "https://pub.flutter-io.cn"
source: hosted source: hosted
version: "1.0.4" version: "1.0.4"
sdks: sdks:
......
...@@ -99,6 +99,8 @@ dependencies: ...@@ -99,6 +99,8 @@ dependencies:
flutter_app_update: ^3.0.4 flutter_app_update: ^3.0.4
# 能指定滑动位置的listView # 能指定滑动位置的listView
azlistview: ^2.0.0 azlistview: ^2.0.0
# 支付宝
tobias: ^3.3.0
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
...@@ -151,3 +153,5 @@ flutter: ...@@ -151,3 +153,5 @@ flutter:
# #
# For details regarding fonts from package dependencies, # For details regarding fonts from package dependencies,
# see https://flutter.dev/custom-fonts/#from-packages # see https://flutter.dev/custom-fonts/#from-packages
tobias:
url_scheme: zijingbook
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论