From c738be9e234a755bc4b2c4b13b7e7339d02f730d Mon Sep 17 00:00:00 2001 From: xufei <727302827@qq.com> Date: Mon, 14 Jul 2025 18:01:16 +0800 Subject: [PATCH] =?UTF-8?q?2025.7.4=20=E6=88=91=E7=9A=84-=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=8D=8F=E8=AE=AE=E3=80=81=E9=9A=90=E7=A7=81=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE=E3=80=81=E5=B8=AE=E5=8A=A9=E4=B8=AD=E5=BF=83=E3=80=81?= =?UTF-8?q?=E5=85=B3=E4=BA=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- android/app/src/main/AndroidManifest.xml | 4 +- lib/pages/mine/mine_feedback_page.dart | 313 +++++++++++++++++++ lib/pages/mine/mine_first_sign_page.dart | 104 +++++++ lib/pages/mine/mine_page.dart | 58 ++++ lib/pages/mine/mine_set_page.dart | 11 + lib/pages/mine/mine_sign_page.dart | 365 +++++++++++++++++++++++ lib/pages/mine/webViewPage.dart | 62 ++++ pubspec.lock | 254 +++++++++------- pubspec.yaml | 7 + 9 files changed, 1066 insertions(+), 112 deletions(-) create mode 100644 lib/pages/mine/mine_feedback_page.dart create mode 100644 lib/pages/mine/mine_first_sign_page.dart create mode 100644 lib/pages/mine/mine_sign_page.dart create mode 100644 lib/pages/mine/webViewPage.dart diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e842ee3..ae8c781 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -38,7 +38,9 @@ + android:icon="@mipmap/ic_launcher" + android:usesCleartextTraffic="true" + > createState() => _FeedbackPageState(); +} + +class _FeedbackPageState extends State { + final _formKey = GlobalKey(); + final TextEditingController _titleController = TextEditingController(); + final TextEditingController _descriptionController = TextEditingController(); + + // 反馈类型 + FeedbackType? _selectedType = FeedbackType.other; + + // 上传的图片 + List _images = []; + + // 获取反馈类型名称 + String _getTypeName(FeedbackType type) { + switch (type) { + case FeedbackType.systemError: + return '系统错误'; + case FeedbackType.uiOptimization: + return '界面优化'; + case FeedbackType.designIssue: + return '设计缺陷'; + case FeedbackType.performanceIssue: + return '性能问题'; + case FeedbackType.other: + return '其他'; + } + } + + // 选择图片 + Future _pickImage() async { + if (_images.length >= 4) return; + + final picker = ImagePicker(); + try { + final pickedFile = await picker.pickImage(source: ImageSource.gallery); + if (pickedFile != null) { + setState(() { + _images.add(File(pickedFile.path)); + }); + } + } catch (e) { + ScaffoldMessenger.of( + context, + ).showSnackBar(const SnackBar(content: Text('无法访问相册,请检查权限设置'))); + } + } + + // 删除图片 + void _removeImage(int index) { + setState(() { + _images.removeAt(index); + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: MyAppbar(title: "问题反馈"), + body: Container( + color: Colors.white, + child: Form( + key: _formKey, + child: SingleChildScrollView( + padding: const EdgeInsets.all(16), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // 标题输入 + const Text('标题', style: TextStyle(fontWeight: FontWeight.bold)), + const SizedBox(height: 8), + TextFormField( + controller: _titleController, + decoration: const InputDecoration( + hintText: '请输入标题...', + border: OutlineInputBorder(), + ), + validator: (value) { + if (value == null || value.isEmpty) { + return '请输入标题'; + } + return null; + }, + ), + const SizedBox(height: 24), + + // 问题描述 + const Text( + '详细问题和意见', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8), + TextFormField( + controller: _descriptionController, + maxLines: 5, + decoration: + const InputDecoration( + hintText: '请补充详细问题和意见...', + border: OutlineInputBorder(), + contentPadding: EdgeInsets.all(10), + ), + validator: (value) { + if (value == null || value.isEmpty) { + return '请补充详细问题和意见'; + } + return null; + }, + ), + const SizedBox(height: 24), + + // 反馈类型 + const Text( + '反馈类型', + style: TextStyle(fontWeight: FontWeight.bold), + ), + const SizedBox(height: 8), + Wrap( + spacing: 16, + children: + FeedbackType.values.map((type) { + return ChoiceChip( + label: Text(_getTypeName(type)), + selected: _selectedType == type, + onSelected: (selected) { + setState(() { + if (selected) { + _selectedType = type; + } + }); + }, + ); + }).toList(), + ), + + // const SizedBox(height: 14), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // const Text( + // '请提供相关问题的截图或照片', + // style: TextStyle(fontWeight: FontWeight.bold), + // ), + // Text( + // '${_images.length}/4', + // style: const TextStyle(color: Colors.grey), + // ), + // ],), + + // 图片上传 + const SizedBox(height: 16), + + RepairedPhotoSection( + horizontalPadding: 0, + title: "请提供相关问题的截图或照片", + maxCount: 4, + mediaType: MediaType.image, + onChanged: (files) { + // 上传 files 到服务器 + }, + onAiIdentify: () {}, + ), + + // GridView.builder( + // shrinkWrap: true, + // physics: const NeverScrollableScrollPhysics(), + // gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( + // crossAxisCount: 4, + // crossAxisSpacing: 8, + // mainAxisSpacing: 8, + // childAspectRatio: 1, + // ), + // itemCount: _images.length + 1, + // itemBuilder: (context, index) { + // if (index < _images.length) { + // return Stack( + // children: [ + // Container( + // decoration: BoxDecoration( + // borderRadius: BorderRadius.circular(8), + // image: DecorationImage( + // image: FileImage(_images[index]), + // fit: BoxFit.cover, + // ), + // ), + // ), + // Positioned( + // top: 4, + // right: 4, + // child: GestureDetector( + // onTap: () => _removeImage(index), + // child: Container( + // padding: const EdgeInsets.all(2), + // decoration: const BoxDecoration( + // shape: BoxShape.circle, + // color: Colors.black54, + // ), + // child: const Icon( + // Icons.close, + // size: 16, + // color: Colors.white, + // ), + // ), + // ), + // ), + // ], + // ); + // } else { + // return _images.length < 4 + // ? GestureDetector( + // onTap: _pickImage, + // child: Container( + // decoration: BoxDecoration( + // border: Border.all(color: Colors.grey), + // borderRadius: BorderRadius.circular(8), + // ), + // child: const Icon( + // Icons.add, + // size: 40, + // color: Colors.grey, + // ), + // ), + // ) + // : const SizedBox(); + // } + // }, + // ), + const SizedBox(height: 40), + + // 提交按钮 + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _submitFeedback, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.blue, + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + child: const Text( + '提交', + style: TextStyle(fontSize: 18, color: Colors.white), + ), + ), + ), + ], + ), + ), + ), + ), + ); + } + + // 提交反馈 + void _submitFeedback() { + if (_formKey.currentState!.validate()) { + // 模拟提交过程 + showDialog( + context: context, + barrierDismissible: false, + builder: (context) => const Center(child: CircularProgressIndicator()), + ); + + Future.delayed(const Duration(seconds: 2), () { + Navigator.pop(context); // 关闭加载对话框 + ScaffoldMessenger.of( + context, + ).showSnackBar(const SnackBar(content: Text('反馈提交成功!'))); + + // 重置表单 + _formKey.currentState!.reset(); + setState(() { + _images.clear(); + _selectedType = FeedbackType.other; + }); + }); + } + } +} diff --git a/lib/pages/mine/mine_first_sign_page.dart b/lib/pages/mine/mine_first_sign_page.dart new file mode 100644 index 0000000..0e77355 --- /dev/null +++ b/lib/pages/mine/mine_first_sign_page.dart @@ -0,0 +1,104 @@ +import 'package:flutter/material.dart'; +import 'dart:io'; +import 'package:flutter/services.dart'; +import 'package:qhd_prevention/pages/my_appbar.dart'; + +import '../../tools/tools.dart'; +import 'mine_sign_page.dart'; + + + + +class FirstSignPage extends StatefulWidget { + const FirstSignPage({super.key}); + + + @override + State createState() => _SignatureUpdatePageState(); +} + +class _SignatureUpdatePageState extends State { + String imagePath=""; + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: MyAppbar(title: "更新签字信息"), + body: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + GestureDetector( + onTap: () { + pushPage(MineSignPage(), context); + }, + child: Text("用户",style: TextStyle(color: Colors.black,fontSize: 16)), + ), + + // _buildConfirmButton(), + ], + ), + const SizedBox(height: 8), + + Row( + children: [ + Text('签字照片:', + style: TextStyle( + fontSize: 16, + fontWeight: FontWeight.bold, + color: Colors.grey, + ), + ), + if (imagePath.isNotEmpty) + Image.file(File(imagePath)), + ], + ), + + // 确认按钮 + // const Spacer(), + // _buildConfirmButton(), + ], + ), + + ); + } + + + + + + + + + + Widget _buildConfirmButton() { + return SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: () { + + }, + style: ElevatedButton.styleFrom( + backgroundColor: const Color(0xFF4285F4), + padding: const EdgeInsets.symmetric(vertical: 16), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + child: imagePath.isNotEmpty + ? const SizedBox( + width: 24, + height: 24, + child: CircularProgressIndicator( + strokeWidth: 2, + color: Colors.white, + ), + ) + : const Text( + '确认', + style: TextStyle(fontSize: 18, color: Colors.white), + ), + ), + ); + } +} \ No newline at end of file diff --git a/lib/pages/mine/mine_page.dart b/lib/pages/mine/mine_page.dart index 123186b..ac6b557 100644 --- a/lib/pages/mine/mine_page.dart +++ b/lib/pages/mine/mine_page.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:qhd_prevention/pages/mine/mine_feedback_page.dart'; +import 'package:qhd_prevention/pages/mine/webViewPage.dart'; import 'package:qhd_prevention/pages/mine/mine_about_page.dart'; import 'package:qhd_prevention/pages/mine/mine_set_page.dart'; import 'package:qhd_prevention/tools/tools.dart'; @@ -56,6 +58,62 @@ class _MinePageState extends State { }, ), + Divider(height: 1,color: Colors.black12,), + GestureDetector( + child: _setItemWidget("问题反馈"), + onTap: () { + pushPage(FeedbackPage(), context); + }, + ), + + Divider(height: 1,color: Colors.black12,), + GestureDetector( + child: _setItemWidget("用户服务协议"), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const WebViewPage( + name: "用户服务协议", + url: 'http://47.92.102.56:7811/file/xieyi/zsyhxy.htm', // 替换为目标网址 + ), + ), + ); + }, + ), + + Divider(height: 1,color: Colors.black12,), + GestureDetector( + child: _setItemWidget("用户隐私协议"), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const WebViewPage( + name: "用户隐私协议", + url: 'http://47.92.102.56:7811/file/xieyi/zsysq.htm', // 替换为目标网址 + ), + ), + ); + }, + ), + + Divider(height: 1,color: Colors.black12,), + GestureDetector( + child: _setItemWidget("帮助中心"), + onTap: () { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => const WebViewPage( + name: "帮助中心", + url: 'http://47.92.102.56:7811/file/help/help/', // 替换为目标网址 + ), + ), + ); + }, + ), + Divider(height: 1,color: Colors.black12,), GestureDetector( child: _setItemWidget("关于"), diff --git a/lib/pages/mine/mine_set_page.dart b/lib/pages/mine/mine_set_page.dart index cbb3352..79d1ca1 100644 --- a/lib/pages/mine/mine_set_page.dart +++ b/lib/pages/mine/mine_set_page.dart @@ -1,6 +1,8 @@ import 'package:flutter/material.dart'; import 'package:qhd_prevention/pages/login_page.dart'; +import 'package:qhd_prevention/pages/mine/mine_first_sign_page.dart'; import 'package:qhd_prevention/pages/mine/mine_set_pwd_page.dart'; +import 'package:qhd_prevention/pages/mine/mine_sign_page.dart'; import 'package:qhd_prevention/pages/my_appbar.dart'; import 'package:qhd_prevention/tools/h_colors.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -29,6 +31,15 @@ class MineSetPage extends StatelessWidget { }, ), + Divider(height: 1, color: Colors.black12), + GestureDetector( + child: _setItemWidget("更新签字信息"), + onTap: () { + pushPage(FirstSignPage(), context); + // pushPage(MineSignPage(), context); + } + ), + Divider(height: 1, color: Colors.black12), GestureDetector(child: _setItemWidget("检查更新"), onTap: () {}), diff --git a/lib/pages/mine/mine_sign_page.dart b/lib/pages/mine/mine_sign_page.dart new file mode 100644 index 0000000..7cd950b --- /dev/null +++ b/lib/pages/mine/mine_sign_page.dart @@ -0,0 +1,365 @@ +import 'dart:io'; + +import 'package:flutter/material.dart'; +import 'package:flutter/rendering.dart'; +import 'dart:ui' as ui; +import 'package:flutter/services.dart'; + +import 'package:path_provider/path_provider.dart'; + +class MineSignPage extends StatelessWidget { + const MineSignPage({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + body: const SignatureConfirmPage(), + ); + } +} + +class SignatureConfirmPage extends StatefulWidget { + const SignatureConfirmPage({super.key}); + + @override + State createState() => _SignatureConfirmPageState(); +} + +class _SignatureConfirmPageState extends State { + final GlobalKey _signatureKey = GlobalKey(); + List _points = []; + bool _hasSignature = false; + File? fileN; + Uint8List? _postBytes; + late String imagepath=""; + + void _clearSignature() { + setState(() { + _points.clear(); + _hasSignature = false; + }); + } + + void _confirmSignature() { + if (!_hasSignature) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar(content: Text('请先签名')), + ); + return; + } + + + _saveSignPic(); + + + + // // 保存签名逻辑 + // ScaffoldMessenger.of(context).showSnackBar( + // const SnackBar(content: Text('签名已确认')), + // ); + //模拟保存后返回 + + + } + + // 保存签名 + void _saveSignPic() async{ + + RenderRepaintBoundary boundary = _signatureKey.currentContext!.findRenderObject() as RenderRepaintBoundary; + var image = await boundary.toImage(pixelRatio: 1); + ByteData? byteData = await image.toByteData(format: ui.ImageByteFormat.png); + + Directory dir = await getTemporaryDirectory(); + String path = dir.path +"/"+ 'sign.png'; + + File file2 = File(path); + // 检查文件是否存在 + if (await file2.exists()) { + // 文件存在,删除文件 + await file2.delete(); + } + + var file = await File(path).create(recursive: true); + if(byteData != null){ + file.writeAsBytesSync(byteData.buffer.asInt8List(),flush: true); + + setState(() { + _postBytes = byteData.buffer.asUint8List(); + fileN = file; + imagepath = file.path; + Future.delayed(const Duration(milliseconds: 500), () { + Navigator.pop(context,imagepath); + }); + }); + + } + } + + + + + + + + + @override + void initState() { + super.initState(); + SystemChrome.setPreferredOrientations([ + DeviceOrientation.landscapeRight, + DeviceOrientation.landscapeLeft, + ]); + } + + @override + void dispose() { + // 不要忘记重置方向设置,以避免影响其他页面或应用。 + SystemChrome.setPreferredOrientations([ + DeviceOrientation.portraitUp, + DeviceOrientation.portraitDown, + DeviceOrientation.landscapeLeft, + DeviceOrientation.landscapeRight, + ]); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: SafeArea( + child: Column( + children: [ + + // 标题区域 + _buildTitleBar(), + // MyAppbar(title: "签字"), + + // 签字区域 + Expanded( + child: _buildSignatureArea(), + ), + + // 按钮区域 + _buildActionButtons(), + ], + ), + ), + ); + } + + Widget _buildTitleBar() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 16), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + IconButton( + icon: const Icon(Icons.arrow_back), + onPressed: () => Navigator.pop(context), + ), + const Text( + '签字', + style: TextStyle( + fontSize: 20, + fontWeight: FontWeight.bold, + ), + ), + const SizedBox(width: 48), // 占位保持标题居中 + ], + ), + ); + } + + Widget _buildSignatureArea() { + return Padding( + padding: const EdgeInsets.symmetric(horizontal: 24), + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12), + border: Border.all(color: Colors.grey[300]!), + ), + child: Column( + children: [ + + // 签字画布 + Expanded( + child: GestureDetector( + onPanStart: (details) { + setState(() { + _points.add(details.localPosition); + _hasSignature = true; + }); + }, + onPanUpdate: (details) { + setState(() { + _points.add(details.localPosition); + }); + }, + onPanEnd: (details) { + setState(() { + _points.add(null); + }); + }, + child: RepaintBoundary( + key: _signatureKey, + child: Stack( + children: [ + // if (imagepath.length > 0) + // Image.file( + // File(imagepath), // 显示选择的图片文件 + // fit: BoxFit.contain, // 设置图片填充方式为完整显示,保持宽高比例 + // ), + + + // 背景横线 + _buildBackgroundLines(), + + // 签名画布 + CustomPaint( + painter: SignaturePainter(points: _points), + size: Size.infinite, + ), + + // 提示文字 + if (!_hasSignature) + const Center( + child: Text( + '请在此处签名', + style: TextStyle( + fontSize: 16, + color: Colors.grey, + ), + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ); + } + + Widget _buildBackgroundLines() { + return LayoutBuilder( + builder: (context, constraints) { + return CustomPaint( + painter: BackgroundLinesPainter(), + size: Size(constraints.maxWidth, constraints.maxHeight), + ); + }, + ); + } + + Widget _buildActionButtons() { + return Padding( + padding: const EdgeInsets.only(left: 24,right: 24,top: 10,bottom: 10), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + // 重签按钮 + Expanded( + child: OutlinedButton( + onPressed: _clearSignature, + style: OutlinedButton.styleFrom( + padding: const EdgeInsets.symmetric(vertical: 8), + side: const BorderSide(color: Colors.blue), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + child: const Text( + '重签', + style: TextStyle( + fontSize: 16, + color: Colors.blue, + fontWeight: FontWeight.w500, + ), + ), + + ), + ), + + const SizedBox(width: 20), + + // 确定按钮 + Expanded( + child: ElevatedButton( + onPressed: _confirmSignature, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.blue, + padding: const EdgeInsets.symmetric(vertical: 8), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8), + ), + ), + child: const Text( + '确定', + style: TextStyle( + fontSize: 16, + color: Colors.white, + fontWeight: FontWeight.w500, + ), + ), + ), + ), + + ], + ), + ); + } +} + +// 签名绘制器 +class SignaturePainter extends CustomPainter { + final List points; + + SignaturePainter({required this.points}); + + @override + void paint(Canvas canvas, Size size) { + Paint paint = Paint() + ..color = Colors.black + ..strokeCap = StrokeCap.round + ..strokeWidth = 3.0; + + for (int i = 0; i < points.length - 1; i++) { + if (points[i] != null && points[i + 1] != null) { + canvas.drawLine(points[i]!, points[i + 1]!, paint); + } + } + } + + @override + bool shouldRepaint(SignaturePainter oldDelegate) => oldDelegate.points != points; +} + +// 背景横线绘制器 +class BackgroundLinesPainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + Paint paint = Paint() + // ..color = Colors.grey[200]! + ..color = Color.from(alpha: 0, red: 0, green: 0, blue: 0)! + ..strokeWidth = 0; + + // 绘制横线 + for (double y = 40; y < size.height; y += 40) { + canvas.drawLine( + Offset(0, y), + Offset(size.width, y), + paint, + ); + } + } + + @override + bool shouldRepaint(CustomPainter oldDelegate) => false; + + + + + +} \ No newline at end of file diff --git a/lib/pages/mine/webViewPage.dart b/lib/pages/mine/webViewPage.dart new file mode 100644 index 0000000..1183843 --- /dev/null +++ b/lib/pages/mine/webViewPage.dart @@ -0,0 +1,62 @@ + +import 'package:flutter/material.dart'; +import 'package:qhd_prevention/pages/my_appbar.dart'; +import 'package:webview_flutter/webview_flutter.dart'; + + +class WebViewPage extends StatefulWidget { + final String url; + final String name; + + const WebViewPage({Key? key, required this.url, required this.name,}) : super(key: key); + + @override + State createState() => _WebViewPageState(name); + + +} + +class _WebViewPageState extends State { + late final WebViewController _controller; + final String name; + ValueNotifier loadingProgress = ValueNotifier(0.0); + ValueNotifier isLoading = ValueNotifier(true); + + _WebViewPageState(this.name); + + @override + void initState() { + super.initState(); + _controller = WebViewController() + ..setJavaScriptMode(JavaScriptMode.unrestricted) + ..setNavigationDelegate(NavigationDelegate( + onProgress: (progress) { + loadingProgress.value = progress / 100; + if (progress == 100) isLoading.value = false; + }, + onPageStarted: (url) => isLoading.value = true, + onPageFinished: (url) => isLoading.value = false, + )) + ..loadRequest(Uri.parse(widget.url)); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + MyAppbar(title: name), + Expanded( child: WebViewWidget(controller: _controller),), + // ValueListenableBuilder( + // valueListenable: isLoading, + // builder: (context, loading, _) { + // return loading + // ? const Center(child: CircularProgressIndicator()) + // : const SizedBox(); + // }, + // ), + ], + + ); + + } +} \ No newline at end of file diff --git a/pubspec.lock b/pubspec.lock index 065dc98..33e3d89 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,23 +6,23 @@ packages: description: name: args sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.7.0" async: dependency: transitive description: name: async - sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.12.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" characters: @@ -30,7 +30,7 @@ packages: description: name: characters sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" clock: @@ -38,7 +38,7 @@ packages: description: name: clock sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" collection: @@ -46,7 +46,7 @@ packages: description: name: collection sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.19.1" connectivity_plus: @@ -54,7 +54,7 @@ packages: description: name: connectivity_plus sha256: "051849e2bd7c7b3bc5844ea0d096609ddc3a859890ec3a9ac4a65a2620cc1f99" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.4" connectivity_plus_platform_interface: @@ -62,7 +62,7 @@ packages: description: name: connectivity_plus_platform_interface sha256: "42657c1715d48b167930d5f34d00222ac100475f73d10162ddf43e714932f204" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" cross_file: @@ -70,7 +70,7 @@ packages: description: name: cross_file sha256: "7caf6a750a0c04effbb52a676dce9a4a592e10ad35c34d6d2d0e4811160d5670" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.4+2" crypto: @@ -78,7 +78,7 @@ packages: description: name: crypto sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.6" csslib: @@ -86,7 +86,7 @@ packages: description: name: csslib sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" cupertino_icons: @@ -94,7 +94,7 @@ packages: description: name: cupertino_icons sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.8" dbus: @@ -102,7 +102,7 @@ packages: description: name: dbus sha256: "79e0c23480ff85dc68de79e2cd6334add97e48f7f4865d17686dd6ea81a47e8c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.11" extended_image: @@ -110,7 +110,7 @@ packages: description: name: extended_image sha256: f6cbb1d798f51262ed1a3d93b4f1f2aa0d76128df39af18ecb77fa740f88b2e0 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "10.0.1" extended_image_library: @@ -118,23 +118,23 @@ packages: description: name: extended_image_library sha256: "1f9a24d3a00c2633891c6a7b5cab2807999eb2d5b597e5133b63f49d113811fe" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.1" fake_async: dependency: transitive description: name: fake_async - sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.3.2" + version: "1.3.3" ffi: dependency: transitive description: name: ffi sha256: "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" file: @@ -142,7 +142,7 @@ packages: description: name: file sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" file_selector_linux: @@ -150,7 +150,7 @@ packages: description: name: file_selector_linux sha256: "54cbbd957e1156d29548c7d9b9ec0c0ebb6de0a90452198683a7d23aed617a33" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+2" file_selector_macos: @@ -158,7 +158,7 @@ packages: description: name: file_selector_macos sha256: "8c9250b2bd2d8d4268e39c82543bacbaca0fda7d29e0728c3c4bbb7c820fd711" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.4+3" file_selector_platform_interface: @@ -166,7 +166,7 @@ packages: description: name: file_selector_platform_interface sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.6.2" file_selector_windows: @@ -174,7 +174,7 @@ packages: description: name: file_selector_windows sha256: "320fcfb6f33caa90f0b58380489fc5ac05d99ee94b61aa96ec2bff0ba81d3c2b" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+4" flutter: @@ -187,7 +187,7 @@ packages: description: name: flutter_lints sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.0" flutter_plugin_android_lifecycle: @@ -195,7 +195,7 @@ packages: description: name: flutter_plugin_android_lifecycle sha256: f948e346c12f8d5480d2825e03de228d0eb8c3a737e4cdaa122267b89c022b5e - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.28" flutter_test: @@ -213,7 +213,7 @@ packages: description: name: html sha256: "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.15.6" http: @@ -221,7 +221,7 @@ packages: description: name: http sha256: "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" http_client_helper: @@ -229,7 +229,7 @@ packages: description: name: http_client_helper sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" http_parser: @@ -237,7 +237,7 @@ packages: description: name: http_parser sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.2" image_picker: @@ -245,7 +245,7 @@ packages: description: name: image_picker sha256: "021834d9c0c3de46bf0fe40341fa07168407f694d9b2bb18d532dc1261867f7a" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" image_picker_android: @@ -253,7 +253,7 @@ packages: description: name: image_picker_android sha256: "317a5d961cec5b34e777b9252393f2afbd23084aa6e60fcf601dcf6341b9ebeb" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.12+23" image_picker_for_web: @@ -261,7 +261,7 @@ packages: description: name: image_picker_for_web sha256: "717eb042ab08c40767684327be06a5d8dbb341fe791d514e4b92c7bbe1b7bb83" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.6" image_picker_ios: @@ -269,7 +269,7 @@ packages: description: name: image_picker_ios sha256: "05da758e67bc7839e886b3959848aa6b44ff123ab4b28f67891008afe8ef9100" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.12+2" image_picker_linux: @@ -277,7 +277,7 @@ packages: description: name: image_picker_linux sha256: "34a65f6740df08bbbeb0a1abd8e6d32107941fd4868f67a507b25601651022c9" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+2" image_picker_macos: @@ -285,7 +285,7 @@ packages: description: name: image_picker_macos sha256: "1b90ebbd9dcf98fb6c1d01427e49a55bd96b5d67b8c67cf955d60a5de74207c1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+2" image_picker_platform_interface: @@ -293,7 +293,7 @@ packages: description: name: image_picker_platform_interface sha256: "886d57f0be73c4b140004e78b9f28a8914a09e50c2d816bdd0520051a71236a0" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.10.1" image_picker_windows: @@ -301,7 +301,7 @@ packages: description: name: image_picker_windows sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+1" intl: @@ -309,7 +309,7 @@ packages: description: name: intl sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.20.2" js: @@ -317,23 +317,23 @@ packages: description: name: js sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.2" leak_tracker: dependency: transitive description: name: leak_tracker - sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + url: "https://pub.flutter-io.cn" source: hosted - version: "10.0.8" + version: "10.0.9" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.9" leak_tracker_testing: @@ -341,7 +341,7 @@ packages: description: name: leak_tracker_testing sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" lints: @@ -349,7 +349,7 @@ packages: description: name: lints sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "5.1.1" matcher: @@ -357,7 +357,7 @@ packages: description: name: matcher sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.12.17" material_color_utilities: @@ -365,7 +365,7 @@ packages: description: name: material_color_utilities sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.11.1" meta: @@ -373,7 +373,7 @@ packages: description: name: meta sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.16.0" mime: @@ -381,7 +381,7 @@ packages: description: name: mime sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" mobile_scanner: @@ -389,7 +389,7 @@ packages: description: name: mobile_scanner sha256: "54005bdea7052d792d35b4fef0f84ec5ddc3a844b250ecd48dc192fb9b4ebc95" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" nested: @@ -397,7 +397,7 @@ packages: description: name: nested sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" nm: @@ -405,7 +405,7 @@ packages: description: name: nm sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.5.0" package_info_plus: @@ -413,7 +413,7 @@ packages: description: name: package_info_plus sha256: "7976bfe4c583170d6cdc7077e3237560b364149fcd268b5f53d95a991963b191" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "8.3.0" package_info_plus_platform_interface: @@ -421,7 +421,7 @@ packages: description: name: package_info_plus_platform_interface sha256: "6c935fb612dff8e3cc9632c2b301720c77450a126114126ffaafe28d2e87956c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" path: @@ -429,15 +429,15 @@ packages: description: name: path sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.5" path_provider_android: @@ -445,7 +445,7 @@ packages: description: name: path_provider_android sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.17" path_provider_foundation: @@ -453,7 +453,7 @@ packages: description: name: path_provider_foundation sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" path_provider_linux: @@ -461,7 +461,7 @@ packages: description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" path_provider_platform_interface: @@ -469,7 +469,7 @@ packages: description: name: path_provider_platform_interface sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" path_provider_windows: @@ -477,7 +477,7 @@ packages: description: name: path_provider_windows sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" petitparser: @@ -485,7 +485,7 @@ packages: description: name: petitparser sha256: "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.0" photo_manager: @@ -493,7 +493,7 @@ packages: description: name: photo_manager sha256: a0d9a7a9bc35eda02d33766412bde6d883a8b0acb86bbe37dac5f691a0894e8a - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.7.1" photo_manager_image_provider: @@ -501,7 +501,7 @@ packages: description: name: photo_manager_image_provider sha256: b6015b67b32f345f57cf32c126f871bced2501236c405aafaefa885f7c821e4f - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" photo_view: @@ -509,7 +509,7 @@ packages: description: name: photo_view sha256: "1fc3d970a91295fbd1364296575f854c9863f225505c28c46e0a03e48960c75e" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.15.0" platform: @@ -517,7 +517,7 @@ packages: description: name: platform sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.6" plugin_platform_interface: @@ -525,7 +525,7 @@ packages: description: name: plugin_platform_interface sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.8" provider: @@ -533,7 +533,7 @@ packages: description: name: provider sha256: "4abbd070a04e9ddc287673bf5a030c7ca8b685ff70218720abab8b092f53dd84" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.5" shared_preferences: @@ -541,7 +541,7 @@ packages: description: name: shared_preferences sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.5.3" shared_preferences_android: @@ -549,7 +549,7 @@ packages: description: name: shared_preferences_android sha256: "20cbd561f743a342c76c151d6ddb93a9ce6005751e7aa458baad3858bfbfb6ac" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.10" shared_preferences_foundation: @@ -557,7 +557,7 @@ packages: description: name: shared_preferences_foundation sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.5.4" shared_preferences_linux: @@ -565,7 +565,7 @@ packages: description: name: shared_preferences_linux sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" shared_preferences_platform_interface: @@ -573,7 +573,7 @@ packages: description: name: shared_preferences_platform_interface sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" shared_preferences_web: @@ -581,7 +581,7 @@ packages: description: name: shared_preferences_web sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.3" shared_preferences_windows: @@ -589,7 +589,7 @@ packages: description: name: shared_preferences_windows sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" simple_gesture_detector: @@ -597,7 +597,7 @@ packages: description: name: simple_gesture_detector sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1" sky_engine: @@ -610,7 +610,7 @@ packages: description: name: source_span sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.10.1" stack_trace: @@ -618,7 +618,7 @@ packages: description: name: stack_trace sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.12.1" stream_channel: @@ -626,7 +626,7 @@ packages: description: name: stream_channel sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" string_scanner: @@ -634,7 +634,7 @@ packages: description: name: string_scanner sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.1" table_calendar: @@ -642,7 +642,7 @@ packages: description: name: table_calendar sha256: "0c0c6219878b363a2d5f40c7afb159d845f253d061dc3c822aa0d5fe0f721982" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" term_glyph: @@ -650,7 +650,7 @@ packages: description: name: term_glyph sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.2" test_api: @@ -658,7 +658,7 @@ packages: description: name: test_api sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.4" typed_data: @@ -666,7 +666,7 @@ packages: description: name: typed_data sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" vector_math: @@ -674,7 +674,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" video_player: @@ -682,7 +682,7 @@ packages: description: name: video_player sha256: "0d55b1f1a31e5ad4c4967bfaa8ade0240b07d20ee4af1dfef5f531056512961a" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.10.0" video_player_android: @@ -690,63 +690,95 @@ packages: description: name: video_player_android sha256: "4a5135754a62dbc827a64a42ef1f8ed72c962e191c97e2d48744225c2b9ebb73" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "2.8.7" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "0d47db6cbf72db61d86369219efd35c7f9d93515e1319da941ece81b1f21c49c" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: "9fedd55023249f3a02738c195c906b4e530956191febf0838e37d0dac912f953" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.7.2" + version: "2.8.0" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface sha256: cf2a1d29a284db648fd66cbd18aacc157f9862d77d2cc790f6f9678a46c1db5a - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.4.0" video_player_web: dependency: transitive description: name: video_player_web - sha256: e8bba2e5d1e159d5048c9a491bb2a7b29c535c612bb7d10c1e21107f5bd365ba - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: "9f3c00be2ef9b76a95d94ac5119fb843dca6f2c69e6c9968f6f2b6c9e7afbdeb" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.5" + version: "2.4.0" visibility_detector: dependency: transitive description: name: visibility_detector sha256: dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.0+2" vm_service: dependency: transitive description: name: vm_service - sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + url: "https://pub.flutter-io.cn" source: hosted - version: "14.3.1" + version: "15.0.0" web: dependency: transitive description: name: web sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" + webview_flutter: + dependency: "direct main" + description: + name: webview_flutter + sha256: c3e4fe614b1c814950ad07186007eff2f2e5dd2935eba7b9a9a1af8e5885f1ba + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.13.0" + webview_flutter_android: + dependency: transitive + description: + name: webview_flutter_android + sha256: f6e6afef6e234801da77170f7a1847ded8450778caf2fe13979d140484be3678 + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.7.0" + webview_flutter_platform_interface: + dependency: transitive + description: + name: webview_flutter_platform_interface + sha256: f0dc2dc3a2b1e3a6abdd6801b9355ebfeb3b8f6cde6b9dc7c9235909c4a1f147 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.13.1" + webview_flutter_wkwebview: + dependency: transitive + description: + name: webview_flutter_wkwebview + sha256: a3d461fe3467014e05f3ac4962e5fdde2a4bf44c561cb53e9ae5c586600fdbc3 + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.22.0" wechat_assets_picker: dependency: "direct main" description: name: wechat_assets_picker sha256: cafe3d32564ed3cacf9822f251941f7b44fe9885c17c8de4fca7e939a459e1ef - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "9.5.1" wechat_picker_library: @@ -754,23 +786,23 @@ packages: description: name: wechat_picker_library sha256: a42e09cb85b15fc9410f6a69671371cc60aa99c4a1f7967f6593a7f665f6f47a - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" win32: dependency: transitive description: name: win32 - sha256: "329edf97fdd893e0f1e3b9e88d6a0e627128cc17cc316a8d67fda8f1451178ba" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + sha256: "66814138c3562338d05613a6e368ed8cfb237ad6d64a9e9334be3f309acfca03" + url: "https://pub.flutter-io.cn" source: hosted - version: "5.13.0" + version: "5.14.0" xdg_directories: dependency: transitive description: name: xdg_directories sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" xml: @@ -778,9 +810,9 @@ packages: description: name: xml sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 - url: "https://mirrors.tuna.tsinghua.edu.cn/dart-pub/" + url: "https://pub.flutter-io.cn" source: hosted version: "6.5.0" sdks: - dart: ">=3.7.0 <4.0.0" + dart: ">=3.8.0 <4.0.0" flutter: ">=3.29.0" diff --git a/pubspec.yaml b/pubspec.yaml index f28a5d2..e4b8501 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -50,6 +50,13 @@ dependencies: video_player: ^2.10.0 #网络监听 connectivity_plus: ^6.1.4 + #网页页面加载 + webview_flutter: ^4.4.0 + #手写签字 +# signature: ^6.0.0 + + path_provider: ^2.0.1 + dev_dependencies: flutter_test: sdk: flutter