Merge remote-tracking branch 'Gitea/master' into iOS

# Conflicts:
#	lib/pages/tabs/page4_myMsics_new.dart
iOS
mlch911 4 years ago
commit c89a753408

2
.gitignore vendored

@ -32,6 +32,8 @@
/build/
.fvm/flutter_sdk
android/app/release/app-release.apk
android/app/release/output.json
pubspec.lock
# Web related
lib/generated_plugin_registrant.dart

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

@ -32,6 +32,8 @@ PODS:
- BIJKPlayer (~> 0.7.10)
- Flutter
- Flutter (1.0.0)
- flutter_background_service (0.0.1):
- Flutter
- flutter_bmfbase (0.0.1):
- BaiduMapKit (= 5.4.0)
- Flutter
@ -89,6 +91,7 @@ DEPENDENCIES:
- disable_screenshots (from `.symlinks/plugins/disable_screenshots/ios`)
- fijkplayer (from `.symlinks/plugins/fijkplayer/ios`)
- Flutter (from `Flutter`)
- flutter_background_service (from `.symlinks/plugins/flutter_background_service/ios`)
- flutter_bmfbase (from `.symlinks/plugins/flutter_bmfbase/ios`)
- flutter_bmfmap (from `.symlinks/plugins/flutter_bmfmap/ios`)
- flutter_bmfutils (from `.symlinks/plugins/flutter_bmfutils/ios`)
@ -132,6 +135,8 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/fijkplayer/ios"
Flutter:
:path: Flutter
flutter_background_service:
:path: ".symlinks/plugins/flutter_background_service/ios"
flutter_bmfbase:
:path: ".symlinks/plugins/flutter_bmfbase/ios"
flutter_bmfmap:
@ -177,6 +182,7 @@ SPEC CHECKSUMS:
disable_screenshots: 3f3a1881efa341fcdad395fb2b25e11a9a7bce0b
fijkplayer: 0d3793a2822d030ef5bba77f904bff1f7a91a115
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
flutter_background_service: a4644870cc76287aaa6147b47107e52680b79c90
flutter_bmfbase: 8ac2c94f3f110daec8e499dc13f8a983b0c8ee40
flutter_bmfmap: 57030919b16b5353649fbea77b6143129f7a4ff1
flutter_bmfutils: 41b6af33c5e7d5d5f841ef9087fbd271c05b1961

@ -99,10 +99,10 @@ class UserInfo {
copyright_info = '© ' + qx_name_long + '城乡融合发展局 四川省踏石科技\n版权所有,' + service_tel.substring(1);
copyright_info_PinYin = 'YIBIN SANJIANG NEW AREA BLACK SMOKE CAR CAPTURE SYSTEM';
//
// mapPoi = {text: , pt: {latitude: 28.811272454489966, longitude: 104.67718748580859}, uid: f79d3a036020ce5fa3d23041}
center_latitude = 28.811272454489966; //
center_longitude = 104.69745647939359; //
g_zoomLevel = g_zoomLevel_default = 12; //
// coordinate = {latitude: 28.822633806922394, longitude: 104.75964294854222}
center_latitude = 28.822633806922394; //
center_longitude = 104.75964294854222; //
g_zoomLevel = g_zoomLevel_default = 13; //
break;
case 511523: //
service_tel = '';

@ -1,9 +1,13 @@
import 'dart:async';
import 'dart:convert';
import 'dart:developer' as developer;
import 'dart:io';
import 'dart:math';
import 'package:ai_save_account/ai_save_account.dart';
import 'package:audioplayers/audio_cache.dart';
import 'package:audioplayers/audioplayers.dart';
import 'package:camera/camera.dart';
import 'package:convert/convert.dart';
import 'package:crypto/crypto.dart' as crypto;
@ -12,11 +16,49 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
//import '../my_wechat_assets_picker_fix/my_asset_picker_1.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:hyzp_ybqx/provider/player_region.dart';
import 'UserInfo.dart';
import 'dioFun.dart';
////////////////////////////////////////////
AudioPlayer playerClick;
AudioPlayer playerClacks;
AudioPlayer playerVoiceRemind;
myPlayClick() async {
if (null == playerClick) {
print("myPlayClick first by load mp3 file");
playerClick = await AudioCache().play('audio/click.mp3');
} else {
print("myPlayClick resume() from cache");
playerClick.seek(Duration(milliseconds: 0));
playerClick.resume();
}
}
myPlayClacks() async {
if (null == playerClick) {
print("myPlayClick first by load mp3 file");
playerClick = await AudioCache().play('audio/clacks.mp3');
} else {
print("myPlayClick resume() from cache");
playerClick.seek(Duration(milliseconds: 0));
playerClick.resume();
}
}
myPlayVoiceRemind() async {
if (null == playerVoiceRemind) {
print("myPlayVoiceRemind first by load mp3 file");
playerVoiceRemind = await AudioCache().play('audio/语音提醒.mp3');
} else {
print("myPlayVoiceRemind resume() from cache");
playerVoiceRemind.seek(Duration(milliseconds: 0));
playerVoiceRemind.resume();
}
}
////////////////////////////////////////////
// begin hyzp_ybqx-Commit022--OK
@ -71,7 +113,51 @@ const serviceUrl_ybqx_media = 'http://125.64.218.67:9906/';
// 2sip01访使1sip
const String setSphericalCameraUrl = 'http://125.64.218.67:9903/'; //
const int g_sip = 1; // sip01
///
//
List listReviewed = [];
bool g_bVoiceRemind = false; //
int g_remindGap = 60; // 60S0
Timer g_remindTimer; //
//
setRemindTimer({bool enable = true}) {
//
if (null != g_remindTimer) {
g_remindTimer.cancel(); //
}
//
if (enable && g_remindGap > 0) {
/// g_remindGap
g_remindTimer = Timer.periodic(Duration(seconds: g_remindGap), (timer) {
///
doRemind();
});
}
}
//
Future doRemind() async {
//
if (g_bVoiceRemind) {
listReviewed.clear();
print("listReviewed = $listReviewed");
await getReviewedList(); //访
print("listReviewed = $listReviewed");
// if (g_bVoiceRemind) {
// import 'dart:io';
// import 'package:audioplayers/audio_cache.dart';
// print("播放:语音提醒.mp3");
if (listReviewed.length > 0) {
// AudioCache().play(File('audio/语音提醒.mp3').path); //
myPlayVoiceRemind();
}
}
}
///
// {
// "ret": 200,

@ -447,9 +447,6 @@ List listGetTsjj = [];
//idlistGetZpjl
List listGetZpjl = [];
//
List listReviewed = [];
//workflow : 1=> | 2=> | 999=> | 1000=>
Map<int, String> mapAuditStatus = {
1: "待审",

@ -91,6 +91,9 @@ class _MyAppState extends State<MyApp> {
// g_bVoiceRemind = (null == g_bVoiceRemind) ? false : g_bVoiceRemind; //
g_bVoiceRemind = (null == g_bVoiceRemind) ? true : g_bVoiceRemind; //
// print('g_bVoiceRemind = $g_bVoiceRemind');
g_remindGap = await Storage.getInt('nRemindGap');
g_remindGap = (null == g_remindGap) ? 60 : g_remindGap; // 60S
eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新'));
}

@ -8,7 +8,7 @@ import 'package:flutter_screenutil/screen_util.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:image_picker/image_picker.dart';
import 'package:path_provider/path_provider.dart';
import 'package:audioplayers/audio_cache.dart';
// import 'package:audioplayers/audio_cache.dart';
import '../../components/commonFun.dart';
import '../../components/dioFun.dart';
@ -56,7 +56,8 @@ class _TakePictuerState extends State<TakePictuer> {
Future<void> _onCamera() async {
await Future.delayed(Duration(milliseconds: 1000), () {
print('开始拍照...');
AudioCache().play(File('audio/yinxiao1064.mp3').path); //
// AudioCache().play(File('audio/yinxiao1064.mp3').path); //
myPlayClacks(); //
onTakePictureButtonPressed();
});
}

@ -176,17 +176,17 @@ class _HyshGroupState extends State<HyshGroup> {
getBtnSizeX(
text: '复审提交',
fontColor: 0 == _selectedRadio ? Colors.red : Colors.green,
onPressedFun: 1 == sfyc
? null
: () async {
// onPressedFun: 1 == sfyc
// ? null
// : () async {
onPressedFun: () async {
int ret = -1;
print('等待复审提交确认');
await Navigator.of(context)
.push(
PageRouteBuilder(
opaque: false,
pageBuilder: (context, animation, secondaryAnimation) =>
CustomDialogHysh(
pageBuilder: (context, animation, secondaryAnimation) => CustomDialogHysh(
shjg: 0 == _selectedRadio ? hyc_text : fhyc_text,
title: '复审',
content:
@ -210,20 +210,18 @@ class _HyshGroupState extends State<HyshGroup> {
widget.id,
widget.index,
mapHyshlx[hyshlx]['audit_workflow'],
topTabs_map['auditShuoming_Controller_List'][widget.index]
.text,
topTabs_map['auditShuoming_Controller_List'][widget.index].text,
topTabs_map['auditTitle'][widget.index],
sfyc: sfyc,
).then((value) {
eventBus.fire(HycsDataUpdateEvent(
'${mapHyshlx[hyshlx]['text']}数据已更新'));
eventBus.fire(
HycsDataUpdateEvent('${mapHyshlx[hyshlx]['text']}数据已更新'));
//
print('tsjj = $tsjj');
if (tsjj) {
print('before tsjjFun(widget.id, _plateAndID)');
String _plateAndID =
topTabs_map['car_number_List'].toString() +
String _plateAndID = topTabs_map['car_number_List'].toString() +
'(ID:${widget.id.toString()})';
tsjjFun(widget.id, _plateAndID);
@ -271,9 +269,10 @@ class _HyshGroupState extends State<HyshGroup> {
getBtnSizeX(
text: '初审提交',
fontColor: 0 == _selectedRadio ? Colors.red : Colors.green,
onPressedFun: 1 == sfyc
? null
: () async {
// onPressedFun: 1 == sfyc
// ? null
// : () async {
onPressedFun: () async {
int ret = -1;
print('等待初审提交确认');
await Navigator.of(context)
@ -297,13 +296,12 @@ class _HyshGroupState extends State<HyshGroup> {
widget.id,
widget.index,
mapHyshlx[hyshlx]['audit_workflow'],
topTabs_map['auditShuoming_Controller_List'][widget.index]
.text,
topTabs_map['auditShuoming_Controller_List'][widget.index].text,
topTabs_map['auditTitle'][widget.index],
sfyc: 0,
).then((value) {
eventBus.fire(
HycsDataUpdateEvent('${mapHyshlx[hyshlx]['text']}数据已更新'));
eventBus
.fire(HycsDataUpdateEvent('${mapHyshlx[hyshlx]['text']}数据已更新'));
});
} else {
print('用户取消了初审提交');

@ -1,3 +1,4 @@
import 'dart:async';
import 'dart:io';
import 'package:badges/badges.dart';
@ -15,7 +16,7 @@ import '../../components/commonFun.dart';
import '../../services/ServiceLocator.dart';
import '../../services/Storage.dart';
import 'page1_work.dart';
import 'package:audioplayers/audio_cache.dart';
// import 'package:audioplayers/audio_cache.dart';
class Tabs extends StatefulWidget {
Tabs({Key key, this.arguments = 0}) : super(key: key);
@ -58,6 +59,9 @@ class _TabsState extends State<Tabs> {
String sAppBar = 'Flutter Demo';
PageController _pageController;
///
// Timer g_remindTimer;
@override
void initState() {
super.initState();
@ -87,17 +91,42 @@ class _TabsState extends State<Tabs> {
// // print('g_bVoiceRemind = $g_bVoiceRemind');
// eventBus.fire(VoiceRemindUpdate('g_bVoiceRemind 数据已更新'));
//
print("listReviewed = $listReviewed");
await getReviewedList(); //访
print("listReviewed = $listReviewed");
if (g_bVoiceRemind && listReviewed.length > 0) {
// if (g_bVoiceRemind) {
// import 'dart:io';
// import 'package:audioplayers/audio_cache.dart';
// print("播放:语音提醒.mp3");
AudioCache().play(File('audio/语音提醒.mp3').path); //
//
doRemind();
// g_remindGap
setRemindTimer();
// g_remindTimer = Timer.periodic(Duration(seconds: g_remindGap), (timer) {
// ///
// doRemind();
// });
}
// //
// Future doRemind() async {
// //
// listReviewed.clear();
// print("listReviewed = $listReviewed");
// await getReviewedList(); //访
// print("listReviewed = $listReviewed");
// if (g_bVoiceRemind && listReviewed.length > 0) {
// // if (g_bVoiceRemind) {
// // import 'dart:io';
// // import 'package:audioplayers/audio_cache.dart';
// // print("播放:语音提醒.mp3");
// AudioCache().play(File('audio/语音提醒.mp3').path); //
// }
// }
@override
void dispose() {
//
if (null != g_remindTimer) {
g_remindTimer.cancel(); //
}
super.dispose();
}
double _activeIconWidth = 68;

@ -1,6 +1,6 @@
import 'dart:io';
import 'package:audioplayers/audio_cache.dart';
// import 'package:audioplayers/audio_cache.dart';
import 'package:badges/badges.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
@ -15,6 +15,7 @@ import 'package:hyzp_ybqx/pages/Works/DWDT/dwInfo_data.dart';
import 'package:hyzp_ybqx/pages/Works/TJXX/tj_data.dart';
import 'package:hyzp_ybqx/pages/tabs/page5_userManager.dart';
import 'package:hyzp_ybqx/pages/tabs/page6_download.dart';
import 'package:hyzp_ybqx/pages/tabs/page7_setRemind.dart';
import 'package:hyzp_ybqx/services/EventBus.dart';
import 'package:hyzp_ybqx/widget/JdButton.dart';
import 'package:package_info/package_info.dart';
@ -202,14 +203,10 @@ class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
leadColor: _deepBlueColor,
onTapFun: OnTap_user_manager),
//bNewVer
_getListTile('待审提醒',
_getListTile('提醒设置',
leadPath: 'assets/images/语音提醒.png',
leadColor: _deepGreyColor,
textColor: g_bVoiceRemind ? Colors.blue : null,
onTapFun: OnTap_Remind,
trailWidget: g_bVoiceRemind
? Icon(Icons.check_box, color: Colors.blue)
: Icon(Icons.check_box_outline_blank, color: Colors.blueAccent)),
onTapFun: OnTap_Remind),
_getListTile('关于',
leadPath: 'assets/images/关于.png', leadColor: _deepBlueColor, onTapFun: OnTap_MyAbout)
@ -441,15 +438,7 @@ class _Page4_MyMsicsNewState extends State<Page4_MyMsicsNew>
}
OnTap_Remind() {
setState(() {
g_bVoiceRemind = !g_bVoiceRemind;
print("bVoiceRemind = $g_bVoiceRemind");
Storage.setBool('bVoiceRemind', g_bVoiceRemind);
if (g_bVoiceRemind) {
AudioCache().play(File('audio/语音提醒.mp3').path); //
}
getListView();
});
Navigator.of(context).push(MaterialPageRoute(builder: (context) => page7_setRemind()));
}
OnTap_MyAbout() {

@ -0,0 +1,287 @@
import 'dart:io';
// import 'package:audioplayers/audio_cache.dart';
import 'package:badges/badges.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:hyzp_ybqx/pages/Login/FaceReg.dart';
import 'package:hyzp_ybqx/pages/Login/ModifyPassword.dart';
import 'package:hyzp_ybqx/services/EventBus.dart';
import 'package:hyzp_ybqx/services/Storage.dart';
import '../../components/commonFun.dart';
import '../../widget/JdButton.dart';
class page7_setRemind extends StatefulWidget {
page7_setRemind({Key key}) : super(key: key);
_LoginPageState createState() => _LoginPageState();
}
class _LoginPageState extends State<page7_setRemind> {
dispose() {
super.dispose();
}
@override
void initState() {
super.initState();
bVoiceRemind = g_bVoiceRemind;
getListView();
// // g_bVoiceRemind
// eventBus.on<VoiceRemindUpdate>().listen((event) async {
// print(event.str + ", g_bVoiceRemind = $g_bVoiceRemind");
// setState(() {
// getListView();
// });
// });
}
////////
static onNullFun() {}
Widget _getListTile(
title, {
String leadPath = '',
Color leadColor,
Color textColor,
onTapFun = onNullFun,
onLongPressFun = onNullFun,
size = 16.0,
bool bBadge = false,
Widget trailWidget = const Icon(Icons.arrow_forward_ios),
}) {
// print("_getListTile bVoiceRemind = $bVoiceRemind"); // _getListTile bVoiceRemind = false
return Column(
children: <Widget>[
ListTile(
leading: bBadge
? Badge(
position: BadgePosition.topEnd(top: -7, end: -12),
badgeContent: null,
child: Image.asset(
leadPath,
height: ScreenUtil().setHeight(78),
fit: BoxFit.fitHeight,
// color: leadColor, //
),
)
: Image.asset(
leadPath,
height: ScreenUtil().setHeight(78),
fit: BoxFit.fitHeight,
),
title: Text(title, style: TextStyle(fontSize: size, color: textColor)),
trailing: trailWidget,
contentPadding: EdgeInsets.symmetric(horizontal: 20.0, vertical: 0),
enabled: true,
onTap: onTapFun,
onLongPress: onLongPressFun,
),
Divider(
height: 1.0,
),
],
);
}
List<Widget> _listViewUser = [];
Color _greenColor = Color.fromRGBO(36, 206, 192, 1); //绿
Color _deepBlueColor = Color.fromRGBO(79, 118, 230, 1); //
Color _deepGreyColor = Color.fromRGBO(116, 139, 161, 1); //
Color _ligthBlueColor = Color.fromRGBO(80, 159, 245, 1); //
OnTap_FaceReg() async {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => FaceReg()));
}
OnTap_modify_password() {
Navigator.of(context).push(MaterialPageRoute(builder: (context) => ModifyPassword()));
}
OnTap_Remind() {
setState(() {
bVoiceRemind = !bVoiceRemind;
print("bVoiceRemind = $bVoiceRemind");
// Storage.setBool('bVoiceRemind', bVoiceRemind);
if (bVoiceRemind) {
print("播放语音提醒");
// AudioCache().play(File('audio/语音提醒.mp3').path); //
myPlayVoiceRemind();
}
getListView();
});
}
bool bVoiceRemind;
getListView() {
_listViewUser.clear();
_listViewUser = [
Center(
child: Container(
margin: EdgeInsets.only(top: 30),
height: ScreenUtil().setWidth(160),
width: ScreenUtil().setWidth(160),
//child: Image.asset('assets/images/user.png', fit: BoxFit.cover),
child: Image.asset('assets/images/ybsthbj.png', fit: BoxFit.fitHeight),
),
),
SizedBox(height: 50),
_getListTile('待审提醒',
leadPath: 'assets/images/语音提醒.png',
leadColor: _deepGreyColor,
textColor: bVoiceRemind ? Colors.blue : null,
onTapFun: OnTap_Remind,
trailWidget: bVoiceRemind
? Icon(Icons.check_box, color: Colors.blue)
: Icon(Icons.check_box_outline_blank, color: Colors.blueAccent)),
_getListTile('提醒间隔(秒)',
leadPath: 'assets/images/时间间隔.png',
leadColor: _deepBlueColor,
trailWidget: getTextField()),
SizedBox(height: 60),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
JdButton(
height: 128,
width: 282,
//height: 126,
text: "确认",
color: Colors.blueAccent,
onTop: () {
g_bVoiceRemind = bVoiceRemind;
print("g_bVoiceRemind = $g_bVoiceRemind");
Storage.setBool('bVoiceRemind', g_bVoiceRemind);
g_remindGap = _gap;
print("g_remindGap = $g_remindGap");
Storage.setInt('nRemindGap', g_remindGap);
setRemindTimer(enable: g_bVoiceRemind);
// AudioCache().play(File('audio/yinxiao1064.mp3').path); //
myPlayClacks(); //
Navigator.pop(context);
},
),
JdButton(
height: 128,
width: 282,
//height: 126,
text: "取消",
color: Colors.blueAccent,
onTop: () {
Navigator.pop(context);
},
)
],
),
];
}
int _gap = g_remindGap;
Widget getTextField() {
return Container(
width: ScreenUtil().setWidth(150),
child: TextField(
readOnly: !bVoiceRemind,
focusNode: FocusNode(),
textAlignVertical: TextAlignVertical(y: 1.0),
controller: TextEditingController.fromValue(TextEditingValue(
text: _gap.toString(),
//
selection: TextSelection.fromPosition(
TextPosition(affinity: TextAffinity.downstream, offset: _gap.toString().length)))),
maxLines: 1,
keyboardType: TextInputType.number,
decoration: InputDecoration(
//contentPadding: EdgeInsets.only(bottom: 16),
// hintText: widget.text,
// border: OutlineInputBorder(
// borderRadius: BorderRadius.circular(30), borderSide: BorderSide.none),
border: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
focusedBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
enabledBorder: UnderlineInputBorder(borderSide: BorderSide(color: Colors.lightBlue)),
),
onChanged: (v) {
_gap = int.parse(v);
},
),
);
}
////////
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(ScreenUtil().setHeight(173)), // appBar
// appBar
child: AppBar(
automaticallyImplyLeading: false,
centerTitle: true,
titleSpacing: 0.0,
//title
flexibleSpace: Container(
//SizedBox(height: ScreenUtil().statusBarHeight), //
// SizedBox(height: ScreenUtil().setHeight(10)), //
padding: EdgeInsets.only(top: ScreenUtil().statusBarHeight), //
child: Container(
//height: ScreenUtil().setHeight(173),
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.centerLeft,
end: Alignment.centerRight,
colors: [
Color.fromRGBO(12, 186, 156, 1),
Color.fromRGBO(39, 127, 235, 1),
],
),
),
// decoration: BoxDecoration(
// gradient: LinearGradient(colors: [
// Color(0xFF0018EB),
// Color(0xFF01C1D9),
// ], begin: Alignment.bottomCenter, end: Alignment.topCenter),
// ),
),
),
title: Padding(
padding: EdgeInsets.only(left: 0, right: 0),
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: [
getIconAndTextButton(
iconColor: Colors.white,
iconData: Icons.chevron_left_outlined,
onPress: () {
Navigator.pop(context);
},
),
Expanded(
child: Text("语音提醒设置",
style: TextStyle(color: Colors.white, fontSize: 20),
textAlign: TextAlign.center,
overflow: TextOverflow.ellipsis),
),
SizedBox(width: 50),
],
),
),
),
),
body: Container(
padding: EdgeInsets.only(top: 30, bottom: 20, left: 20, right: 20),
child: ListView(
children: _listViewUser,
),
),
);
}
}

@ -11,6 +11,16 @@ class Storage {
return sp.getString(key);
}
static Future<void> setInt(String key, int value) async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.setInt(key, value);
}
static Future<int> getInt(String key) async {
SharedPreferences sp = await SharedPreferences.getInstance();
return sp.getInt(key);
}
static Future<void> setBool(String key, bool value) async {
SharedPreferences sp = await SharedPreferences.getInstance();
sp.setBool(key, value);

@ -244,6 +244,13 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
flutter_background_service:
dependency: "direct main"
description:
name: flutter_background_service
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.0.1+21"
flutter_blurhash:
dependency: transitive
description:

@ -64,7 +64,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
#version: 1.4.21+20220319
#version: 1.4.22+20220320
#version: 1.4.23+20220408
version: 1.4.24+20220409
version: 1.4.26+20220426
environment:
sdk: ">=2.7.0 <3.0.0"
@ -97,6 +97,7 @@ dependencies:
camera: ^0.5.8+11
audioplayers: ^0.16.2
flutter_background_service: ^0.0.1+21
encrypt: ^4.1.0
device_info: ^1.0.0

Loading…
Cancel
Save