diff --git a/android/app/build.gradle b/android/app/build.gradle index 0d70196a..67b0c9de 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -106,7 +106,7 @@ android { defaultConfig { applicationId "com.zsw.huixiang" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName diff --git a/android/build.gradle b/android/build.gradle index c7f9f6a8..4bdad802 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,6 +1,9 @@ buildscript { ext.kotlin_version = '1.7.10' repositories { + maven { url "https://www.jitpack.io" } + maven {url 'https://developer.huawei.com/repo/'} + maven { url 'https://repo1.maven.org/maven2/' } maven { url 'https://maven.aliyun.com/repository/google' } @@ -11,28 +14,22 @@ buildscript { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/groups/public' } -// google() -// jcenter() maven { allowInsecureProtocol = true url "http://mvn.mob.com/android" } - maven { url "https://www.jitpack.io" } - maven {url 'https://developer.huawei.com/repo/'} - maven { url 'https://repo1.maven.org/maven2/' } + maven { url 'https://developer.huawei.com/repo/' } } dependencies { -// classpath 'com.android.tools.build:gradle:4.1.0' - classpath 'com.android.tools.build:gradle:7.2.0' + classpath 'com.android.tools.build:gradle:7.4.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.huawei.agconnect:agcp:1.4.1.300' classpath 'com.mob.sdk:MobSDK:+' - classpath 'com.android.tools.build:gradle:3.4.0' classpath fileTree(include:['*.jar'], dir:'libs') - classpath 'com.umeng.umsdk:common:9.4.7' - classpath 'com.umeng.umsdk:asms:1.4.0' - classpath 'com.umeng.umsdk:abtest:1.0.0' + classpath 'com.umeng.umsdk:common:9.4.7' + classpath 'com.umeng.umsdk:asms:1.4.0' + classpath 'com.umeng.umsdk:abtest:1.0.0' } } @@ -41,22 +38,15 @@ allprojects { maven { url 'https://maven.aliyun.com/repository/google' } - maven { - url 'https://maven.aliyun.com/repository/jcenter' - } maven { allowInsecureProtocol = true url 'http://maven.aliyun.com/nexus/content/groups/public' } -// google() -// jcenter() maven { allowInsecureProtocol = true url "http://mvn.mob.com/android" } - maven { url "https://www.jitpack.io" } - maven { url 'https://developer.huawei.com/repo/'} - maven { url 'https://repo1.maven.org/maven2/' } + google() } } @@ -66,6 +56,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/gradle.properties b/android/gradle.properties index f2f0fd0d..ec92ecce 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -4,7 +4,4 @@ android.useAndroidX=true android.enableJetifier=true MobSDK.mobEnv=x MobSDK.spEdition=FP -android.injected.testOnly=false -#org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED - - +android.injected.testOnly=false \ No newline at end of file diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 2ec77e51..609ab8e6 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/lib/im/Proto.dart b/lib/im/Proto.dart new file mode 100644 index 00000000..b32d8dd3 --- /dev/null +++ b/lib/im/Proto.dart @@ -0,0 +1,72 @@ +import 'dart:typed_data'; + + + +/** + * + * 需要按照格式严格封装 + * + * + * 4个字节 放全部信息长度 头+body + * 2字节 header长度 + * 2字节 默认填1 + * 4字节 登录1,消息5 + * 4字节 默认填1 + * 不限制长度body 但是不要超过2048-16 + * 需要严格控制每条消息发送不超过 2048 + */ + + +class Proto { + static const int HEADER_LENGTH = 16; // 假设头部长度为16字节 + static const int VERSION = 1; + + int operation; + int seqId; + Uint8List body; + + Proto(this.operation, this.seqId, this.body); + + Uint8List toBytes() { + final buffer = BytesBuilder(); + buffer.add(_intToBytes(HEADER_LENGTH + body.length, 4)); + buffer.add(_shortToBytes(HEADER_LENGTH, 2)); + buffer.add(_shortToBytes(VERSION, 2)); + buffer.add(_intToBytes(operation, 4)); + buffer.add(_intToBytes(seqId, 4)); + buffer.add(body); + return buffer.toBytes(); + } + + + static Proto fromBytes(Uint8List data) { + final buffer = ByteData.sublistView(data); + int offset = 0; + + int packetLen = buffer.getInt32(offset, Endian.big); + offset += 4; + int headerLen = buffer.getInt16(offset, Endian.big); + offset += 2; + int version = buffer.getInt16(offset, Endian.big); + offset += 2; + int operation = buffer.getInt32(offset, Endian.big); + offset += 4; + int seqId = buffer.getInt32(offset, Endian.big); + offset += 4; + Uint8List body = data.sublist(offset); + + return Proto(operation, seqId, body); + } + + List _intToBytes(int value, int length) { + final bytes = ByteData(length); + bytes.setInt32(0, value, Endian.big); + return bytes.buffer.asUint8List(); + } + + List _shortToBytes(int value, int length) { + final bytes = ByteData(length); + bytes.setInt16(0, value, Endian.big); + return bytes.buffer.asUint8List(); + } +} diff --git a/lib/im/SocketClient.dart b/lib/im/SocketClient.dart new file mode 100644 index 00000000..ed256f65 --- /dev/null +++ b/lib/im/SocketClient.dart @@ -0,0 +1,60 @@ + + + +import 'dart:convert'; +import 'dart:io'; + +import 'package:flutter/foundation.dart'; +import 'package:huixiang/im/Proto.dart'; +import 'package:huixiang/im/out/auth.pb.dart'; +import 'package:huixiang/im/out/message.pb.dart'; + +class SocketClient { + + Socket _socket; + + connect() async { + _socket = await Socket.connect('192.168.10.129', 9090); + _socket.listen((data) { + print(data); + print("socket-listen"); + Proto proto = Proto.fromBytes(data); + print("socket-listen: $proto"); + MsgData data1 = MsgData.fromBuffer(proto.body); + print('收到来自:${data1.from},消息内容: ${utf8.decode(data1.data)} '); + + callbacks.forEach((callback) { + callback.call(data1); + }); + + }); + } + + List callbacks = []; + + addCallback(Function callback) { + callbacks.add(callback); + } + + removeCallback(Function callback) { + callbacks.remove(callback); + } + + authRequest(String token) { + final authReq = AuthReq() + ..uid = 1 + ..token = '123456'; + final authReqBytes = authReq.writeToBuffer(); + final proto = Proto(1, 1, authReqBytes); // 假设 operation 和 seqId 为 1 + final protoBytes = proto.toBytes(); + _socket.add(protoBytes); + } + + sendMessage(var to, String content) { + Uint8List data = utf8.encode(content); + MsgData msgData = MsgData(to: to,from: 2,type: MsgType.SINGLE_TEXT,data: data); + final proto2 = Proto(5,1,msgData.writeToBuffer()); + _socket.add(proto2.toBytes()); + } + +} \ No newline at end of file diff --git a/lib/im/out/auth.pb.dart b/lib/im/out/auth.pb.dart new file mode 100644 index 00000000..d4efd840 --- /dev/null +++ b/lib/im/out/auth.pb.dart @@ -0,0 +1,160 @@ +// +// Generated code. Do not modify. +// source: auth.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class AuthReq extends $pb.GeneratedMessage { + factory AuthReq({ + $core.int? uid, + $core.String? token, + }) { + final $result = create(); + if (uid != null) { + $result.uid = uid; + } + if (token != null) { + $result.token = token; + } + return $result; + } + AuthReq._() : super(); + factory AuthReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory AuthReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AuthReq', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'uid', $pb.PbFieldType.OU3) + ..aOS(2, _omitFieldNames ? '' : 'token') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + AuthReq clone() => AuthReq()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + AuthReq copyWith(void Function(AuthReq) updates) => super.copyWith((message) => updates(message as AuthReq)) as AuthReq; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static AuthReq create() => AuthReq._(); + AuthReq createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static AuthReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static AuthReq? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get uid => $_getIZ(0); + @$pb.TagNumber(1) + set uid($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasUid() => $_has(0); + @$pb.TagNumber(1) + void clearUid() => clearField(1); + + @$pb.TagNumber(2) + $core.String get token => $_getSZ(1); + @$pb.TagNumber(2) + set token($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasToken() => $_has(1); + @$pb.TagNumber(2) + void clearToken() => clearField(2); +} + +class AuthResp extends $pb.GeneratedMessage { + factory AuthResp({ + $core.int? uid, + $core.int? code, + $core.String? message, + }) { + final $result = create(); + if (uid != null) { + $result.uid = uid; + } + if (code != null) { + $result.code = code; + } + if (message != null) { + $result.message = message; + } + return $result; + } + AuthResp._() : super(); + factory AuthResp.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory AuthResp.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'AuthResp', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'uid', $pb.PbFieldType.OU3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'code', $pb.PbFieldType.OU3) + ..aOS(3, _omitFieldNames ? '' : 'message') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + AuthResp clone() => AuthResp()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + AuthResp copyWith(void Function(AuthResp) updates) => super.copyWith((message) => updates(message as AuthResp)) as AuthResp; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static AuthResp create() => AuthResp._(); + AuthResp createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static AuthResp getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static AuthResp? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get uid => $_getIZ(0); + @$pb.TagNumber(1) + set uid($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasUid() => $_has(0); + @$pb.TagNumber(1) + void clearUid() => clearField(1); + + @$pb.TagNumber(2) + $core.int get code => $_getIZ(1); + @$pb.TagNumber(2) + set code($core.int v) { $_setUnsignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasCode() => $_has(1); + @$pb.TagNumber(2) + void clearCode() => clearField(2); + + @$pb.TagNumber(3) + $core.String get message => $_getSZ(2); + @$pb.TagNumber(3) + set message($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasMessage() => $_has(2); + @$pb.TagNumber(3) + void clearMessage() => clearField(3); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/im/out/auth.pbenum.dart b/lib/im/out/auth.pbenum.dart new file mode 100644 index 00000000..175ec1ff --- /dev/null +++ b/lib/im/out/auth.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: auth.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/lib/im/out/auth.pbjson.dart b/lib/im/out/auth.pbjson.dart new file mode 100644 index 00000000..d97595c5 --- /dev/null +++ b/lib/im/out/auth.pbjson.dart @@ -0,0 +1,43 @@ +// +// Generated code. Do not modify. +// source: auth.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use authReqDescriptor instead') +const AuthReq$json = { + '1': 'AuthReq', + '2': [ + {'1': 'uid', '3': 1, '4': 1, '5': 13, '10': 'uid'}, + {'1': 'token', '3': 2, '4': 1, '5': 9, '10': 'token'}, + ], +}; + +/// Descriptor for `AuthReq`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List authReqDescriptor = $convert.base64Decode( + 'CgdBdXRoUmVxEhAKA3VpZBgBIAEoDVIDdWlkEhQKBXRva2VuGAIgASgJUgV0b2tlbg=='); + +@$core.Deprecated('Use authRespDescriptor instead') +const AuthResp$json = { + '1': 'AuthResp', + '2': [ + {'1': 'uid', '3': 1, '4': 1, '5': 13, '10': 'uid'}, + {'1': 'code', '3': 2, '4': 1, '5': 13, '10': 'code'}, + {'1': 'message', '3': 3, '4': 1, '5': 9, '10': 'message'}, + ], +}; + +/// Descriptor for `AuthResp`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List authRespDescriptor = $convert.base64Decode( + 'CghBdXRoUmVzcBIQCgN1aWQYASABKA1SA3VpZBISCgRjb2RlGAIgASgNUgRjb2RlEhgKB21lc3' + 'NhZ2UYAyABKAlSB21lc3NhZ2U='); + diff --git a/lib/im/out/auth.pbserver.dart b/lib/im/out/auth.pbserver.dart new file mode 100644 index 00000000..33381478 --- /dev/null +++ b/lib/im/out/auth.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: auth.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'auth.pb.dart'; + diff --git a/lib/im/out/message.pb.dart b/lib/im/out/message.pb.dart new file mode 100644 index 00000000..360aae2a --- /dev/null +++ b/lib/im/out/message.pb.dart @@ -0,0 +1,272 @@ +// +// Generated code. Do not modify. +// source: message.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'message.pbenum.dart'; + +export 'message.pbenum.dart'; + +class MsgData extends $pb.GeneratedMessage { + factory MsgData({ + $core.int? to, + $core.int? from, + $core.int? ctime, + MsgType? type, + $core.List<$core.int>? data, + }) { + final $result = create(); + if (to != null) { + $result.to = to; + } + if (from != null) { + $result.from = from; + } + if (ctime != null) { + $result.ctime = ctime; + } + if (type != null) { + $result.type = type; + } + if (data != null) { + $result.data = data; + } + return $result; + } + MsgData._() : super(); + factory MsgData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MsgData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MsgData', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'to', $pb.PbFieldType.OU3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'from', $pb.PbFieldType.OU3) + ..a<$core.int>(3, _omitFieldNames ? '' : 'ctime', $pb.PbFieldType.OU3) + ..e(4, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: MsgType.SINGLE_TEXT, valueOf: MsgType.valueOf, enumValues: MsgType.values) + ..a<$core.List<$core.int>>(5, _omitFieldNames ? '' : 'data', $pb.PbFieldType.OY) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MsgData clone() => MsgData()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MsgData copyWith(void Function(MsgData) updates) => super.copyWith((message) => updates(message as MsgData)) as MsgData; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MsgData create() => MsgData._(); + MsgData createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MsgData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MsgData? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get to => $_getIZ(0); + @$pb.TagNumber(1) + set to($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasTo() => $_has(0); + @$pb.TagNumber(1) + void clearTo() => clearField(1); + + @$pb.TagNumber(2) + $core.int get from => $_getIZ(1); + @$pb.TagNumber(2) + set from($core.int v) { $_setUnsignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasFrom() => $_has(1); + @$pb.TagNumber(2) + void clearFrom() => clearField(2); + + @$pb.TagNumber(3) + $core.int get ctime => $_getIZ(2); + @$pb.TagNumber(3) + set ctime($core.int v) { $_setUnsignedInt32(2, v); } + @$pb.TagNumber(3) + $core.bool hasCtime() => $_has(2); + @$pb.TagNumber(3) + void clearCtime() => clearField(3); + + @$pb.TagNumber(4) + MsgType get type => $_getN(3); + @$pb.TagNumber(4) + set type(MsgType v) { setField(4, v); } + @$pb.TagNumber(4) + $core.bool hasType() => $_has(3); + @$pb.TagNumber(4) + void clearType() => clearField(4); + + @$pb.TagNumber(5) + $core.List<$core.int> get data => $_getN(4); + @$pb.TagNumber(5) + set data($core.List<$core.int> v) { $_setBytes(4, v); } + @$pb.TagNumber(5) + $core.bool hasData() => $_has(4); + @$pb.TagNumber(5) + void clearData() => clearField(5); +} + +class MsgNotify extends $pb.GeneratedMessage { + factory MsgNotify({ + $core.int? seq, + }) { + final $result = create(); + if (seq != null) { + $result.seq = seq; + } + return $result; + } + MsgNotify._() : super(); + factory MsgNotify.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MsgNotify.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MsgNotify', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'seq', $pb.PbFieldType.OU3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MsgNotify clone() => MsgNotify()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MsgNotify copyWith(void Function(MsgNotify) updates) => super.copyWith((message) => updates(message as MsgNotify)) as MsgNotify; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MsgNotify create() => MsgNotify._(); + MsgNotify createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MsgNotify getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MsgNotify? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get seq => $_getIZ(0); + @$pb.TagNumber(1) + set seq($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasSeq() => $_has(0); + @$pb.TagNumber(1) + void clearSeq() => clearField(1); +} + +class MsgSync extends $pb.GeneratedMessage { + factory MsgSync({ + $core.int? seq, + }) { + final $result = create(); + if (seq != null) { + $result.seq = seq; + } + return $result; + } + MsgSync._() : super(); + factory MsgSync.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MsgSync.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MsgSync', createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'seq', $pb.PbFieldType.OU3) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MsgSync clone() => MsgSync()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MsgSync copyWith(void Function(MsgSync) updates) => super.copyWith((message) => updates(message as MsgSync)) as MsgSync; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MsgSync create() => MsgSync._(); + MsgSync createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MsgSync getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MsgSync? _defaultInstance; + + @$pb.TagNumber(1) + $core.int get seq => $_getIZ(0); + @$pb.TagNumber(1) + set seq($core.int v) { $_setUnsignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasSeq() => $_has(0); + @$pb.TagNumber(1) + void clearSeq() => clearField(1); +} + +class MsgSyncData extends $pb.GeneratedMessage { + factory MsgSyncData({ + $core.Iterable? messages, + }) { + final $result = create(); + if (messages != null) { + $result.messages.addAll(messages); + } + return $result; + } + MsgSyncData._() : super(); + factory MsgSyncData.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory MsgSyncData.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'MsgSyncData', createEmptyInstance: create) + ..pc(1, _omitFieldNames ? '' : 'messages', $pb.PbFieldType.PM, subBuilder: MsgData.create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + MsgSyncData clone() => MsgSyncData()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + MsgSyncData copyWith(void Function(MsgSyncData) updates) => super.copyWith((message) => updates(message as MsgSyncData)) as MsgSyncData; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static MsgSyncData create() => MsgSyncData._(); + MsgSyncData createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static MsgSyncData getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static MsgSyncData? _defaultInstance; + + @$pb.TagNumber(1) + $core.List get messages => $_getList(0); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/im/out/message.pbenum.dart b/lib/im/out/message.pbenum.dart new file mode 100644 index 00000000..a78564c4 --- /dev/null +++ b/lib/im/out/message.pbenum.dart @@ -0,0 +1,36 @@ +// +// Generated code. Do not modify. +// source: message.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class MsgType extends $pb.ProtobufEnum { + static const MsgType SINGLE_TEXT = MsgType._(0, _omitEnumNames ? '' : 'SINGLE_TEXT'); + static const MsgType SINGLE_AUDIO = MsgType._(1, _omitEnumNames ? '' : 'SINGLE_AUDIO'); + static const MsgType GROUP_TEXT = MsgType._(2, _omitEnumNames ? '' : 'GROUP_TEXT'); + static const MsgType GROUP_AUDIO = MsgType._(3, _omitEnumNames ? '' : 'GROUP_AUDIO'); + + static const $core.List values = [ + SINGLE_TEXT, + SINGLE_AUDIO, + GROUP_TEXT, + GROUP_AUDIO, + ]; + + static final $core.Map<$core.int, MsgType> _byValue = $pb.ProtobufEnum.initByValue(values); + static MsgType? valueOf($core.int value) => _byValue[value]; + + const MsgType._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/lib/im/out/message.pbjson.dart b/lib/im/out/message.pbjson.dart new file mode 100644 index 00000000..1870d86d --- /dev/null +++ b/lib/im/out/message.pbjson.dart @@ -0,0 +1,85 @@ +// +// Generated code. Do not modify. +// source: message.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use msgTypeDescriptor instead') +const MsgType$json = { + '1': 'MsgType', + '2': [ + {'1': 'SINGLE_TEXT', '2': 0}, + {'1': 'SINGLE_AUDIO', '2': 1}, + {'1': 'GROUP_TEXT', '2': 2}, + {'1': 'GROUP_AUDIO', '2': 3}, + ], +}; + +/// Descriptor for `MsgType`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List msgTypeDescriptor = $convert.base64Decode( + 'CgdNc2dUeXBlEg8KC1NJTkdMRV9URVhUEAASEAoMU0lOR0xFX0FVRElPEAESDgoKR1JPVVBfVE' + 'VYVBACEg8KC0dST1VQX0FVRElPEAM='); + +@$core.Deprecated('Use msgDataDescriptor instead') +const MsgData$json = { + '1': 'MsgData', + '2': [ + {'1': 'to', '3': 1, '4': 1, '5': 13, '10': 'to'}, + {'1': 'from', '3': 2, '4': 1, '5': 13, '10': 'from'}, + {'1': 'ctime', '3': 3, '4': 1, '5': 13, '10': 'ctime'}, + {'1': 'type', '3': 4, '4': 1, '5': 14, '6': '.MsgType', '10': 'type'}, + {'1': 'data', '3': 5, '4': 1, '5': 12, '10': 'data'}, + ], +}; + +/// Descriptor for `MsgData`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List msgDataDescriptor = $convert.base64Decode( + 'CgdNc2dEYXRhEg4KAnRvGAEgASgNUgJ0bxISCgRmcm9tGAIgASgNUgRmcm9tEhQKBWN0aW1lGA' + 'MgASgNUgVjdGltZRIcCgR0eXBlGAQgASgOMgguTXNnVHlwZVIEdHlwZRISCgRkYXRhGAUgASgM' + 'UgRkYXRh'); + +@$core.Deprecated('Use msgNotifyDescriptor instead') +const MsgNotify$json = { + '1': 'MsgNotify', + '2': [ + {'1': 'seq', '3': 1, '4': 1, '5': 13, '10': 'seq'}, + ], +}; + +/// Descriptor for `MsgNotify`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List msgNotifyDescriptor = $convert.base64Decode( + 'CglNc2dOb3RpZnkSEAoDc2VxGAEgASgNUgNzZXE='); + +@$core.Deprecated('Use msgSyncDescriptor instead') +const MsgSync$json = { + '1': 'MsgSync', + '2': [ + {'1': 'seq', '3': 1, '4': 1, '5': 13, '10': 'seq'}, + ], +}; + +/// Descriptor for `MsgSync`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List msgSyncDescriptor = $convert.base64Decode( + 'CgdNc2dTeW5jEhAKA3NlcRgBIAEoDVIDc2Vx'); + +@$core.Deprecated('Use msgSyncDataDescriptor instead') +const MsgSyncData$json = { + '1': 'MsgSyncData', + '2': [ + {'1': 'messages', '3': 1, '4': 3, '5': 11, '6': '.MsgData', '10': 'messages'}, + ], +}; + +/// Descriptor for `MsgSyncData`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List msgSyncDataDescriptor = $convert.base64Decode( + 'CgtNc2dTeW5jRGF0YRIkCghtZXNzYWdlcxgBIAMoCzIILk1zZ0RhdGFSCG1lc3NhZ2Vz'); + diff --git a/lib/im/out/message.pbserver.dart b/lib/im/out/message.pbserver.dart new file mode 100644 index 00000000..102eb6e3 --- /dev/null +++ b/lib/im/out/message.pbserver.dart @@ -0,0 +1,14 @@ +// +// Generated code. Do not modify. +// source: message.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names +// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +export 'message.pb.dart'; + diff --git a/lib/main.dart b/lib/main.dart index d118ed01..e18e4e79 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -14,6 +14,7 @@ import 'package:huixiang/community/community_details.dart'; import 'package:huixiang/community/release_dynamic.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/home/founder_story_page.dart'; +import 'package:huixiang/im/SocketClient.dart'; import 'package:huixiang/integral/integral_detailed_page.dart'; import 'package:huixiang/integral/integral_page.dart'; import 'package:huixiang/integral_store/integral_store_details_page.dart'; @@ -216,6 +217,7 @@ void main() async { +final SocketClient socketClient = new SocketClient(); EventBus eventBus = EventBus(sync: true); Route lastRoutePage; diff --git a/lib/main_page.dart b/lib/main_page.dart index 4bd8c1f0..d34d5aec 100644 --- a/lib/main_page.dart +++ b/lib/main_page.dart @@ -9,6 +9,8 @@ import 'package:flutter_svg/flutter_svg.dart'; import 'package:huixiang/community/community_page.dart'; import 'package:huixiang/generated/l10n.dart'; import 'package:huixiang/home/home_page.dart'; +import 'package:huixiang/im/Proto.dart'; +import 'package:huixiang/im/out/message.pb.dart'; import 'package:huixiang/main.dart'; import 'package:huixiang/mine/mine_page.dart'; import 'package:huixiang/retrofit/data/app_update.dart'; @@ -90,9 +92,33 @@ class _MainPage extends State with WidgetsBindingObserver { } } + connectSocket() async { + final socket = await Socket.connect('192.168.10.129', 9090); + + // 监听服务器响应 + socket.listen((Uint8List data) { + + print("123"); + Proto proto = Proto.fromBytes(data); + print("1234,$proto"); + MsgData data1 = MsgData.fromBuffer(proto.body); + print('收到来自:${data1.from},消息内容: ${utf8.decode(data1.data)} '); + + }, onDone: () { + print('Server closed connection'); + socket.destroy(); + }, onError: (error) { + print('Error: $error'); + socket.destroy(); + }); + } + @override void initState() { super.initState(); + + connectSocket(); + pageController = PageController( initialPage: widget.arguments != null && widget.arguments["index"] != null diff --git a/pubspec.lock b/pubspec.lock index 8f0b427d..ad880523 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: ai_decimal_accuracy sha256: "2a0f195a0bf9f36e7481a66e03d5b1e4e90b4861438910d63e99e42ddcdebdbb" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.1.0" android_intent_plus: @@ -14,7 +14,7 @@ packages: description: name: android_intent_plus sha256: e49b4d9e26135dd7ef83606aac56bd3105345e8243de903939a15c5aa07cc0ec - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.2" args: @@ -22,7 +22,7 @@ packages: description: name: args sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.4.2" asn1lib: @@ -30,7 +30,7 @@ packages: description: name: asn1lib sha256: b74e3842a52c61f8819a1ec8444b4de5419b41a7465e69d4aa681445377398b0 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.4.1" async: @@ -38,7 +38,7 @@ packages: description: name: async sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.10.0" barcode: @@ -46,7 +46,7 @@ packages: description: name: barcode sha256: "6f4e44699843c336fcb4a14a4f4221f03d21ae47dd8c4ae4c25ffc7b7dd1cfb8" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.0" barcode_widget: @@ -54,7 +54,7 @@ packages: description: name: barcode_widget sha256: "4fb82c63a008972bc5f0ca83865bd3a5728f596c80f44658aefd7d55b6e65f45" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.1" boolean_selector: @@ -62,7 +62,7 @@ packages: description: name: boolean_selector sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.1" bubble_tab_indicator: @@ -70,7 +70,7 @@ packages: description: name: bubble_tab_indicator sha256: "0aa37980a00e3374d917f9da8e83acd7f59ba872a3d05c306220063f28f945aa" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.1.6" characters: @@ -78,7 +78,7 @@ packages: description: name: characters sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.2.1" charcode: @@ -86,7 +86,7 @@ packages: description: name: charcode sha256: fb98c0f6d12c920a02ee2d998da788bca066ca5f148492b7085ee23372b12306 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.1" charts_common: @@ -94,7 +94,7 @@ packages: description: name: charts_common sha256: "7b8922f9b0d9b134122756a787dab1c3946ae4f3fc5022ff323ba0014998ea02" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.12.0" charts_flutter: @@ -102,7 +102,7 @@ packages: description: name: charts_flutter sha256: "4172c3f4b85322fdffe1896ffbed79ae4689ae72cb6fe6690dcaaea620a9c558" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.12.0" chewie: @@ -110,7 +110,7 @@ packages: description: name: chewie sha256: "90a75721f8cb881be0a38878b246183f69a0490e409f1d8f294b686b89a25f24" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.3" chewie_audio: @@ -118,7 +118,7 @@ packages: description: name: chewie_audio sha256: ac29d37382c4f0d9da8e6f53c78b3e74ffff102040b1e77c7e49e4fa35cd425f - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.4.0" clock: @@ -126,7 +126,7 @@ packages: description: name: clock sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.1.1" collection: @@ -134,7 +134,7 @@ packages: description: name: collection sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.17.0" convert: @@ -142,39 +142,39 @@ packages: description: name: convert sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.1.1" crypto: dependency: transitive description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.flutter-io.cn" + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "3.0.2" + version: "3.0.3" csslib: dependency: transitive description: name: csslib - sha256: b36c7f7e24c0bdf1bf9a3da461c837d1de64b9f8beb190c9011d8c72a3dfd745 - url: "https://pub.flutter-io.cn" + sha256: "831883fb353c8bdc1d71979e5b342c7d88acfbc643113c14ae51e2442ea0f20f" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "0.17.2" + version: "0.17.3" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.flutter-io.cn" + sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "1.0.5" + version: "1.0.6" dio: dependency: "direct main" description: name: dio sha256: "11979099d9ea182d74b6734340704d628b99c7a8316f9edd7718a297d1bcdd27" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.0.10" emoji_picker_flutter: @@ -182,7 +182,7 @@ packages: description: name: emoji_picker_flutter sha256: a0e8b36a98ca2257b0edd9cb6ef5b4aa2a6fbf3ed67cf11eab96100778741b8a - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.4.1" encrypt: @@ -190,7 +190,7 @@ packages: description: name: encrypt sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "5.0.1" equatable: @@ -198,7 +198,7 @@ packages: description: name: equatable sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.5" event_bus: @@ -206,7 +206,7 @@ packages: description: name: event_bus sha256: "44baa799834f4c803921873e7446a2add0f3efa45e101a054b1f0ab9b95f8edc" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.0" fake_async: @@ -214,7 +214,7 @@ packages: description: name: fake_async sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.1" fast_gbk: @@ -222,7 +222,7 @@ packages: description: name: fast_gbk sha256: "3f0dc0309986f615404ea8d1fccf00a535dc00ee90b88d71492866bd95586489" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.0" ffi: @@ -230,7 +230,7 @@ packages: description: name: ffi sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.2" file: @@ -238,15 +238,23 @@ packages: description: name: file sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "6.1.4" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://mirrors.cloud.tencent.com/dart-pub/" + source: hosted + version: "1.1.0" fl_chart: dependency: "direct main" description: name: fl_chart sha256: "48a1b69be9544e2b03d9a8e843affd89e43f3194c9248776222efcb4206bb1ec" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.62.0" flare_flutter: @@ -254,7 +262,7 @@ packages: description: name: flare_flutter sha256: "99d63c60f00fac81249ce6410ee015d7b125c63d8278a30da81edf3317a1f6a0" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.0.2" flutter: @@ -267,7 +275,7 @@ packages: description: name: flutter_datetime_picker sha256: "8e695c63c769350e541951227c2775190ec73ceda774a315b1dc9a99d5facfe5" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.5.1" flutter_easyloading: @@ -275,7 +283,7 @@ packages: description: name: flutter_easyloading sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.0.5" flutter_html: @@ -283,7 +291,7 @@ packages: description: name: flutter_html sha256: ccb810fcabfce3a7ffaca46e458323915ac7e7fc59082c7357ff848972c02230 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.2.1" flutter_layout_grid: @@ -291,7 +299,7 @@ packages: description: name: flutter_layout_grid sha256: "86c1b21520612edfbb93f189b3ec05058470570f3a5c08ce10c92cc76a6e814e" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.6" flutter_localizations: @@ -304,7 +312,7 @@ packages: description: name: flutter_math_fork sha256: cfec964c4975c6becc64291eb9b782fe70df5e0c5bfe0763d9e856432fcc6fcd - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.4.2+2" flutter_page_indicator: @@ -312,7 +320,7 @@ packages: description: name: flutter_page_indicator sha256: a5b2992228c2827b69faed3977681a3f5c313c7f13d72272decbb2923d1d7176 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.0.3" flutter_pdfview: @@ -320,7 +328,7 @@ packages: description: name: flutter_pdfview sha256: a9055bf920c7095bf08c2781db431ba23577aa5da5a056a7152dc89a18fbec6f - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.2" flutter_screenutil: @@ -328,7 +336,7 @@ packages: description: name: flutter_screenutil sha256: c04bf2f9a41b5130c1071daa34acc04b5e4f479181287a958ece9b31a5b8f89c - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "5.0.0+1" flutter_slidable: @@ -336,7 +344,7 @@ packages: description: name: flutter_slidable sha256: "90787334388211e6810065550119b015e6fd3893584641194d500bf5bc7e6235" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.2" flutter_smart_dialog: @@ -344,23 +352,23 @@ packages: description: name: flutter_smart_dialog sha256: "0db3450d40de1664dbcb49cd82ebf4b1a3609b2510532ee122821a7dd5806b40" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.5.0" flutter_spinkit: dependency: "direct main" description: name: flutter_spinkit - sha256: b39c753e909d4796906c5696a14daf33639a76e017136c8d82bf3e620ce5bb8e - url: "https://pub.flutter-io.cn" + sha256: d2696eed13732831414595b98863260e33e8882fc069ee80ec35d4ac9ddb0472 + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "5.2.0" + version: "5.2.1" flutter_staggered_grid_view: dependency: "direct main" description: name: flutter_staggered_grid_view sha256: f0b6d8c0fa7b4b444985cdde68492c0138a4fb6fc57a641b24cb234b7ee0f5c4 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.4.1" flutter_svg: @@ -368,7 +376,7 @@ packages: description: name: flutter_svg sha256: "9ac1967e2f72a08af11b05b39167920f90d043cf67163d13a544a358c8f31afa" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.22.0" flutter_swiper: @@ -376,7 +384,7 @@ packages: description: name: flutter_swiper sha256: e52a0e894abfa4099a5d4e5098a00597f3b55e25617cdd19e6fe6be5d24858c7 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.1.6" flutter_test: @@ -394,7 +402,7 @@ packages: description: name: fluwx sha256: e54837349819d51261be00692071db43fc1ff79dd06cf3a50175a5940249691e - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.9.0+2" font_awesome_flutter: @@ -402,7 +410,7 @@ packages: description: name: font_awesome_flutter sha256: "1f93e5799f0e6c882819e8393a05c6ca5226010f289190f2242ec19f3f0fdba5" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "9.2.0" geolocator: @@ -410,7 +418,7 @@ packages: description: name: geolocator sha256: "01fed879aa87185efebfb1d23de619077bcc7d83ffdebd0aad6f74392f84fb40" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "6.2.1" geolocator_platform_interface: @@ -418,7 +426,7 @@ packages: description: name: geolocator_platform_interface sha256: aa11c4cb9eb31f096ffc62cf54858f869bd437de327cba660577ddd594a8f3fa - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.9" geolocator_web: @@ -426,7 +434,7 @@ packages: description: name: geolocator_web sha256: "9a7f3c5061fb8fb26103fc67e07343eebd4d3b15d18c6d75766e2a1a8b0618f8" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.1" gradient_widgets: @@ -434,7 +442,7 @@ packages: description: name: gradient_widgets sha256: d337a8a329da9aefa50b82155d11875c1b9992982f65d15c805aa057a2670536 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.6.0" graphs: @@ -442,23 +450,23 @@ packages: description: name: graphs sha256: db4e50f399d69bf7349d4e99e8dabd74fad51c0574f36b8d3613ef465715af52 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.2.0" html: dependency: transitive description: name: html - sha256: "58e3491f7bf0b6a4ea5110c0c688877460d1a6366731155c4a4580e7ded773e8" - url: "https://pub.flutter-io.cn" + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "0.15.3" + version: "0.15.4" http_parser: dependency: transitive description: name: http_parser sha256: "9d2b0626e9e402fc98e6868360da8f256064d6c0b8e4c3edcca5e02fb0b95da9" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.1.4" image_gallery_saver: @@ -466,7 +474,7 @@ packages: description: name: image_gallery_saver sha256: "0aba74216a4d9b0561510cb968015d56b701ba1bd94aace26aacdd8ae5761816" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.3" image_pickers: @@ -474,7 +482,7 @@ packages: description: name: image_pickers sha256: "3175436eec5136773230cf25bb0feba7e58bded93c6f4159bd4bae2b90b4c2d3" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.0" infinite_listview: @@ -482,7 +490,7 @@ packages: description: name: infinite_listview sha256: f6062c1720eb59be553dfa6b89813d3e8dd2f054538445aaa5edaddfa5195ce6 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.1.0" intl: @@ -490,7 +498,7 @@ packages: description: name: intl sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.17.0" js: @@ -498,7 +506,7 @@ packages: description: name: js sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.6.5" json_annotation: @@ -506,7 +514,7 @@ packages: description: name: json_annotation sha256: "6cec7404b25d6338c8cb7b30131cd6c760079a4ec1fa7846c55bdda91f9d2819" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.1.1" keframe: @@ -514,7 +522,7 @@ packages: description: name: keframe sha256: a84add1826c54cd68e6095dbcc00cdd84fd4d97820712bfc8e1d06f41b0bfac3 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.0.0" like_button: @@ -522,7 +530,7 @@ packages: description: name: like_button sha256: "08e6a45b78888412df5d351786c550205ad3a677e72a0820d5bbc0b063c8a463" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.5" logger: @@ -530,7 +538,7 @@ packages: description: name: logger sha256: "697d067c60c20999686a0add96cf6aba723b3aa1f83ecf806a8097231529ec32" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.4.0" logging: @@ -538,7 +546,7 @@ packages: description: name: logging sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.2.0" matcher: @@ -546,7 +554,7 @@ packages: description: name: matcher sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.12.13" material_color_utilities: @@ -554,7 +562,7 @@ packages: description: name: material_color_utilities sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.2.0" meta: @@ -562,23 +570,23 @@ packages: description: name: meta sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.8.0" mqtt_client: dependency: "direct main" description: name: mqtt_client - sha256: e8347f8996c33b80a6764a1881e94a8ef5392c2d6e724b9daad65eafa202b0c7 - url: "https://pub.flutter-io.cn" + sha256: ba10ec490ded55dc4e77bbc992529d823fb15d0d5ec68c2895f960312060c541 + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "9.6.8" + version: "9.8.1" nested: dependency: transitive description: name: nested sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.0" network_to_file_image: @@ -586,7 +594,7 @@ packages: description: name: network_to_file_image sha256: "47528730539abf61ea9b5edf30fe2803b5f8212b2049e1a6cb3b564acadc46dc" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "4.0.1" number_precision: @@ -594,7 +602,7 @@ packages: description: name: number_precision sha256: "397639f584cdd4fb5965e3b91c03b911b0c8fa9c5be7e7236bbf102bf6f75681" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.2+1" numerus: @@ -602,7 +610,7 @@ packages: description: name: numerus sha256: "0087ef729d63b96cb347a9c44b9c592f21cecb3605b415bbd18710aef80ce5cb" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.1.1" package_info: @@ -610,7 +618,7 @@ packages: description: name: package_info sha256: "6c07d9d82c69e16afeeeeb6866fe43985a20b3b50df243091bfc4a4ad2b03b75" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.2" path: @@ -618,7 +626,7 @@ packages: description: name: path sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.8.2" path_drawing: @@ -626,7 +634,7 @@ packages: description: name: path_drawing sha256: "3bdd251dae9ffaef944450b73f168610db7e968e7b20daf0c3907f8b4aafc8a2" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.5.1+1" path_parsing: @@ -634,7 +642,7 @@ packages: description: name: path_parsing sha256: ee5c47c1058ad66b4a41746ec3996af9593d0858872807bcd64ac118f0700337 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.2.1" path_provider: @@ -642,7 +650,7 @@ packages: description: name: path_provider sha256: "050e8e85e4b7fecdf2bb3682c1c64c4887a183720c802d323de8a5fd76d372dd" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.11" path_provider_android: @@ -650,7 +658,7 @@ packages: description: name: path_provider_android sha256: "1667b3926378bba6bbd1c8c4ddd68fab6a2825f27a285bd55370c1b12f21440a" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.9" path_provider_ios: @@ -658,23 +666,23 @@ packages: description: name: path_provider_ios sha256: "03d639406f5343478352433f00d3c4394d52dac8df3d847869c5e2333e0bbce8" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.11" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1" - url: "https://pub.flutter-io.cn" + sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "2.1.10" + version: "2.1.11" path_provider_macos: dependency: transitive description: name: path_provider_macos sha256: "4e9a9637dfeba8c35f598238c63adc6e77121b16d81ae97ad21b952a67c83a64" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.3" path_provider_platform_interface: @@ -682,23 +690,23 @@ packages: description: name: path_provider_platform_interface sha256: "2e14fc474b8acfc4111ac8eb0e37c2fe70234f9f8cd796f1560d03aa1689fa51" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.0" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: d3f80b32e83ec208ac95253e0cd4d298e104fbc63cb29c5c69edaed43b0c69d6 - url: "https://pub.flutter-io.cn" + sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "2.1.6" + version: "2.1.7" permission_handler: dependency: "direct main" description: name: permission_handler sha256: fb4666087528b1cbf91d98771cf50b14f36f4d8756ec7e7a8629dd3cb55442b7 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "5.1.0+2" permission_handler_platform_interface: @@ -706,47 +714,47 @@ packages: description: name: permission_handler_platform_interface sha256: f7e3c798f7c4dd215e4ca8843695b3a63a5b79c9aa04f296d316f13a15d518ba - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.2" petitparser: dependency: transitive description: name: petitparser - sha256: "2ebb289dc4764ec397f5cd3ca9881c6d17196130a7d646ed022a0dd9c2e25a71" - url: "https://pub.flutter-io.cn" + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "5.0.0" + version: "5.1.0" photo_view: dependency: "direct main" description: name: photo_view sha256: "26cb153080a2673bebccaf72d3283e82f8f41a47fe5f9bc5ba8634d2e8a9fc8e" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.13.0" pin_input_text_field: dependency: "direct main" description: name: pin_input_text_field - sha256: "569861876d5c67994adc58ddd15e93bd0057c4f26d7e5599ccde880d05813463" - url: "https://pub.flutter-io.cn" + sha256: f45683032283d30b670ec343781660655e3e1953438b281a0bc6e2d358486236 + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "4.4.1" + version: "4.5.2" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.flutter-io.cn" + sha256: "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "3.1.0" + version: "3.1.3" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface sha256: c3ebbff365bfb1b5f7b690c9857d2dabea167f35b05eb7586186499b407efb37 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.3" pointycastle: @@ -754,31 +762,31 @@ packages: description: name: pointycastle sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.7.3" - process: - dependency: transitive + protobuf: + dependency: "direct main" description: - name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.flutter-io.cn" + name: protobuf + sha256: "68645b24e0716782e58948f8467fd42a880f255096a821f9e7d0ec625b00c84d" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "4.2.4" + version: "3.1.0" provider: dependency: transitive description: name: provider - sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.flutter-io.cn" + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "6.0.5" + version: "6.1.2" pull_to_refresh: dependency: "direct main" description: name: pull_to_refresh sha256: bbadd5a931837b57739cf08736bea63167e284e71fb23b218c8c9a6e042aad12 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.0" qr: @@ -786,7 +794,7 @@ packages: description: name: qr sha256: "5c4208b4dc0d55c3184d10d83ee0ded6212dc2b5e2ba17c5a0c0aab279128d21" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.0" qr_flutter: @@ -794,23 +802,23 @@ packages: description: name: qr_flutter sha256: c5c121c54cb6dd837b9b9d57eb7bc7ec6df4aee741032060c8833a678c80b87e - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "4.0.0" quiver: dependency: transitive description: name: quiver - sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 - url: "https://pub.flutter-io.cn" + sha256: ea0b925899e64ecdfbf9c7becb60d5b50e706ade44a85b2363be2a22d88117d2 + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "3.2.1" + version: "3.2.2" retrofit: dependency: "direct main" description: name: retrofit sha256: bd4d2817ecb01cdf7ce6d7de62a44716639e82e6b62bd295984c12eb916fb341 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.4+1" rive: @@ -818,7 +826,7 @@ packages: description: name: rive sha256: cf420a4440bc072698432bd176e70c70cbec01b8c1debe5c56edf2a19b310fbf - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.6.8" rxdart: @@ -826,7 +834,7 @@ packages: description: name: rxdart sha256: "2ef8b4e91cb3b55d155e0e34eeae0ac7107974e451495c955ac04ddee8cc21fd" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.26.0" scan: @@ -834,7 +842,7 @@ packages: description: name: scan sha256: b343ec36f863a88d41eb4c174b810c055c6bd1f1822b2188ab31aab684fb7cdb - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.6.0" shared_preferences: @@ -842,7 +850,7 @@ packages: description: name: shared_preferences sha256: "78528fd87d0d08ffd3e69551173c026e8eacc7b7079c82eb6a77413957b7e394" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.20" shared_preferences_android: @@ -850,7 +858,7 @@ packages: description: name: shared_preferences_android sha256: ad423a80fe7b4e48b50d6111b3ea1027af0e959e49d485712e134863d9c1c521 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.17" shared_preferences_foundation: @@ -858,7 +866,7 @@ packages: description: name: shared_preferences_foundation sha256: "1e755f8583229f185cfca61b1d80fb2344c9d660e1c69ede5450d8f478fa5310" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.5" shared_preferences_linux: @@ -866,7 +874,7 @@ packages: description: name: shared_preferences_linux sha256: "3a59ed10890a8409ad0faad7bb2957dab4b92b8fbe553257b05d30ed8af2c707" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.5" shared_preferences_platform_interface: @@ -874,7 +882,7 @@ packages: description: name: shared_preferences_platform_interface sha256: "992f0fdc46d0a3c0ac2e5859f2de0e577bbe51f78a77ee8f357cbe626a2ad32d" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.0" shared_preferences_web: @@ -882,7 +890,7 @@ packages: description: name: shared_preferences_web sha256: "0dc2633f215a3d4aa3184c9b2c5766f4711e4e5a6b256e62aafee41f89f1bfb8" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.6" shared_preferences_windows: @@ -890,23 +898,23 @@ packages: description: name: shared_preferences_windows sha256: "71bcd669bb9cdb6b39f22c4a7728b6d49e934f6cba73157ffa5a54f1eed67436" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.5" sharesdk_plugin: dependency: "direct main" description: name: sharesdk_plugin - sha256: "76bccf3ecfaf41a9182502d8ce7e3de838646ce656095ca3153baf20ba6ae72d" - url: "https://pub.flutter-io.cn" + sha256: a1a18d01f362c119df1931082e3694591a24b3b00eef2576522e00ef8da3b25e + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "1.3.6" + version: "1.3.10" shimmer: dependency: "direct main" description: name: shimmer sha256: "5f88c883a22e9f9f299e5ba0e4f7e6054857224976a5d9f839d4ebdc94a14ac9" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.0.0" simple_gesture_detector: @@ -914,7 +922,7 @@ packages: description: name: simple_gesture_detector sha256: "7ab8ee2027f4323a1574e9eeda55d4279ae499190e119d6b872b3a52b501eb42" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.1.6" sky_engine: @@ -927,7 +935,7 @@ packages: description: name: source_span sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.9.1" stack_trace: @@ -935,7 +943,7 @@ packages: description: name: stack_trace sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.11.0" steel_crypt: @@ -943,7 +951,7 @@ packages: description: name: steel_crypt sha256: "4f86a8ddc690ed1adff486faeb4ceece9e09f59cd90c8bd7e2ff48c42ca271dd" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.0.0+1" stream_channel: @@ -951,7 +959,7 @@ packages: description: name: stream_channel sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.1" string_scanner: @@ -959,7 +967,7 @@ packages: description: name: string_scanner sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.2.0" syncfusion_flutter_core: @@ -967,7 +975,7 @@ packages: description: name: syncfusion_flutter_core sha256: "9be1bb9bbdb42823439a18da71484f1964c14dbe1c255ab1b931932b12fa96e8" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "19.4.56" syncfusion_flutter_datepicker: @@ -975,7 +983,7 @@ packages: description: name: syncfusion_flutter_datepicker sha256: ff428c4e2ebd753c2f8f3b2aa60e96e014c9ca2653ce7007c7a603e560973f34 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "19.4.56" table_calendar: @@ -983,7 +991,7 @@ packages: description: name: table_calendar sha256: "82dc932c6e07af6e7eeafb2c91e87969746f3b9b59ac222ecf8d75f51c3a4844" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.3.3" term_glyph: @@ -991,7 +999,7 @@ packages: description: name: term_glyph sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.2.1" test_api: @@ -999,7 +1007,7 @@ packages: description: name: test_api sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.4.16" tobias: @@ -1007,7 +1015,7 @@ packages: description: name: tobias sha256: "61b35145cdebde36da7a54d211d807a3cb1681c50456d40495fa7109dddd7a44" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.4.1" tpns_flutter_plugin: @@ -1024,7 +1032,7 @@ packages: description: name: transformer_page_view sha256: "2210531bc4148831061c575070173f32693415be8bbbf5bd2159a38f2adff61c" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.1.6" tuple: @@ -1032,7 +1040,7 @@ packages: description: name: tuple sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.2" typed_data: @@ -1040,23 +1048,23 @@ packages: description: name: typed_data sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.3.2" umeng_common_sdk: dependency: "direct main" description: name: umeng_common_sdk - sha256: fce28065224b0839ffc16b5003d2295dae8aabee290bf639f978536b32ed601d - url: "https://pub.flutter-io.cn" + sha256: "60d7ac8093d42e236dbecb5fc8558b16644808a70d24514ad926be7ddf56d5e9" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "1.2.6" + version: "1.2.7" url_launcher: dependency: "direct main" description: name: url_launcher sha256: e1e0c46fcd777c0f0bd7f4541b747c28ad4e925f93344cebf667ef76c695533a - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "5.7.10" url_launcher_linux: @@ -1064,7 +1072,7 @@ packages: description: name: url_launcher_linux sha256: c489023cdd864a19c0be63bb3796bec21ea4bc16bfe09568953f1828e02151c9 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.0.1+4" url_launcher_macos: @@ -1072,7 +1080,7 @@ packages: description: name: url_launcher_macos sha256: be04eac5076414469027ce068c360478c3e56e43205bb7efaaa61cbdd3ba890d - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.0.1+9" url_launcher_platform_interface: @@ -1080,7 +1088,7 @@ packages: description: name: url_launcher_platform_interface sha256: c6bd00f46e8c348703d0ae691850eb2052be8e1338dc3ae6f72af53b962da157 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "1.0.9" url_launcher_web: @@ -1088,7 +1096,7 @@ packages: description: name: url_launcher_web sha256: eaa6de8ac353681794533edcedd69dd8b39ed987bf2360d172185eff8283dbc2 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.1.5+3" url_launcher_windows: @@ -1096,7 +1104,7 @@ packages: description: name: url_launcher_windows sha256: "034479b1dafd8f01de81267d8117eb5ae019e0dddcc23f4b14ed31253a2635d9" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.0.1+3" vector_math: @@ -1104,7 +1112,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.1.4" video_player: @@ -1112,7 +1120,7 @@ packages: description: name: video_player sha256: "743b57d45251101344057d3b886a5f9a4fbb3eb3e275ac8bb64c3a7fa0c79d4c" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.2.19" video_player_android: @@ -1120,23 +1128,23 @@ packages: description: name: video_player_android sha256: b41889c6bc9eaf51790863885349fb5ff8edef2da940291a2da96b80dd649686 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.3.4" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "5df5411ff9d316f1dcbfee284e9838aa686e314f2a722b15c02cb7ce40ef9446" - url: "https://pub.flutter-io.cn" + sha256: "90468226c8687adf7b567d9bb42c25588783c4d30509af1fbd663b2dd049f700" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "2.3.9" + version: "2.4.2" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface sha256: a1d56477752271a7a0de872d8962bce1dd5fecf463beaf66da417ebebb9ba0f7 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "4.2.0" video_player_web: @@ -1144,7 +1152,7 @@ packages: description: name: video_player_web sha256: fb3bbeaf0302cb0c31340ebd6075487939aa1fe3b379d1a8784ef852b679940e - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.15" visibility_detector: @@ -1152,7 +1160,7 @@ packages: description: name: visibility_detector sha256: "15c54a459ec2c17b4705450483f3d5a2858e733aee893dcee9d75fd04814940d" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.3.3" wakelock: @@ -1160,7 +1168,7 @@ packages: description: name: wakelock sha256: "769ecf42eb2d07128407b50cb93d7c10bd2ee48f0276ef0119db1d25cc2f87db" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.6.2" wakelock_macos: @@ -1168,7 +1176,7 @@ packages: description: name: wakelock_macos sha256: "047c6be2f88cb6b76d02553bca5a3a3b95323b15d30867eca53a19a0a319d4cd" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.4.0" wakelock_platform_interface: @@ -1176,7 +1184,7 @@ packages: description: name: wakelock_platform_interface sha256: "1f4aeb81fb592b863da83d2d0f7b8196067451e4df91046c26b54a403f9de621" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.3.0" wakelock_web: @@ -1184,7 +1192,7 @@ packages: description: name: wakelock_web sha256: "1b256b811ee3f0834888efddfe03da8d18d0819317f20f6193e2922b41a501b5" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.4.0" wakelock_windows: @@ -1192,7 +1200,7 @@ packages: description: name: wakelock_windows sha256: "857f77b3fe6ae82dd045455baa626bc4b93cb9bb6c86bf3f27c182167c3a5567" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.2.1" webview_flutter: @@ -1200,7 +1208,7 @@ packages: description: name: webview_flutter sha256: "15900bc32e210fc5a87b08e65473c45ff4fa0ed707f05a84ea2547aaf1d2cfc7" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "2.0.14" widgetpicker: @@ -1208,7 +1216,7 @@ packages: description: name: widgetpicker sha256: "1ab0ef91a279d0dfbbddc6d2b0c2624ea02b8ab7030d51d27d97dad2a1233a15" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "0.1.1" win32: @@ -1216,25 +1224,25 @@ packages: description: name: win32 sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4 - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "3.1.4" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1 - url: "https://pub.flutter-io.cn" + sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted - version: "1.0.0" + version: "1.0.3" xml: dependency: transitive description: name: xml sha256: "80d494c09849dc3f899d227a78c30c5b949b985ededf884cb3f3bcd39f4b447a" - url: "https://pub.flutter-io.cn" + url: "https://mirrors.cloud.tencent.com/dart-pub/" source: hosted version: "5.4.1" sdks: dart: ">=2.19.0 <3.0.0" - flutter: ">=3.0.0" + flutter: ">=3.7.0" diff --git a/pubspec.yaml b/pubspec.yaml index 20e98c3c..162508dc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -126,6 +126,8 @@ dependencies: syncfusion_flutter_datepicker: ^19.4.38 + protobuf: ^3.1.0 + dev_dependencies: flutter_test: sdk: flutter