mod: 楼中楼回复

This commit is contained in:
guozhigq
2023-04-24 21:27:36 +08:00
parent a0441aa589
commit 1d97d1848d
5 changed files with 202 additions and 101 deletions

View File

@ -1,28 +1,14 @@
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:pilipala/common/widgets/network_img_layer.dart';
import 'package:pilipala/models/video/reply/item.dart';
import 'package:pilipala/utils/utils.dart';
class ReplyItem extends StatefulWidget {
ReplyItem({super.key, this.replyItem, this.isUp});
ReplyItemModel? replyItem;
bool? isUp;
@override
State<ReplyItem> createState() => _ReplyItemState();
}
class _ReplyItemState extends State<ReplyItem> {
class ReplyItem extends StatelessWidget {
ReplyItem({super.key, this.replyItem, required this.isUp});
ReplyItemModel? replyItem;
bool isUp = false;
@override
void initState() {
super.initState();
replyItem = widget.replyItem;
isUp = widget.isUp!;
}
@override
Widget build(BuildContext context) {
return InkWell(
@ -30,7 +16,7 @@ class _ReplyItemState extends State<ReplyItem> {
child: Column(
children: [
Padding(
padding: const EdgeInsets.fromLTRB(12, 8, 8, 4),
padding: const EdgeInsets.fromLTRB(12, 8, 8, 14),
child: content(context),
),
Divider(
@ -42,7 +28,7 @@ class _ReplyItemState extends State<ReplyItem> {
);
}
Widget lfAvtar() {
Widget lfAvtar(context) {
return Container(
margin: const EdgeInsets.only(top: 5),
clipBehavior: Clip.hardEdge,
@ -78,7 +64,7 @@ class _ReplyItemState extends State<ReplyItem> {
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
lfAvtar(),
lfAvtar(context),
const SizedBox(width: 12),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@ -93,7 +79,7 @@ class _ReplyItemState extends State<ReplyItem> {
.textTheme
.titleSmall!
.copyWith(
color: isUp
color: isUp!
? Theme.of(context).colorScheme.primary
: null,
),
@ -136,18 +122,24 @@ class _ReplyItemState extends State<ReplyItem> {
),
),
),
bottonAction(),
bottonAction(context),
// Text(replyItem!.replies!.length.toString()),
if (replyItem!.replies!.isNotEmpty)
ReplyItemRow(
replies: replyItem!.replies,
replyControl: replyItem!.replyControl,
)
],
);
}
// 感谢、回复、复制
Widget bottonAction() {
Widget bottonAction(context) {
var color = Theme.of(context).colorScheme.outline;
return Row(
mainAxisAlignment: MainAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.start,
children: [
// const SizedBox(width: 42),
const SizedBox(width: 42),
SizedBox(
height: 35,
child: TextButton(
@ -176,3 +168,88 @@ class _ReplyItemState extends State<ReplyItem> {
);
}
}
class ReplyItemRow extends StatelessWidget {
ReplyItemRow({super.key, this.replies, this.replyControl});
List? replies;
var replyControl;
@override
Widget build(BuildContext context) {
bool isShow = replyControl.isShow;
int extraRow = replyControl != null && isShow ? 1 : 0;
return Container(
margin: const EdgeInsets.only(left: 45, right: 10),
padding: const EdgeInsets.only(top: 4, bottom: 4),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(6),
),
child: Material(
color: Theme.of(context).colorScheme.onInverseSurface.withOpacity(0.7),
borderRadius: BorderRadius.circular(6),
clipBehavior: Clip.hardEdge,
child: ListView.builder(
padding: EdgeInsets.zero,
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: replies!.length + extraRow,
itemBuilder: (context, index) {
if (extraRow == 1 && index == replies!.length) {
return ListTile(
onTap: () {},
dense: true,
contentPadding: const EdgeInsets.only(left: 10, right: 6),
title: Text.rich(
TextSpan(
style: TextStyle(
color: Theme.of(context).colorScheme.primary,
fontSize:
Theme.of(context).textTheme.titleSmall!.fontSize,
),
children: [
if (replyControl.upReply) const TextSpan(text: 'up回复了'),
if (replyControl.isUpTop) const TextSpan(text: 'up点赞了'),
TextSpan(text: replyControl.entryText)
],
),
),
);
} else {
return ListTile(
onTap: () {},
dense: true,
contentPadding: const EdgeInsets.only(left: 10, right: 6),
title: Text.rich(
overflow: TextOverflow.ellipsis,
maxLines: 2,
TextSpan(
children: [
TextSpan(
text: replies![index].member.uname + '',
style: TextStyle(
fontSize: Theme.of(context)
.textTheme
.titleSmall!
.fontSize,
color: Theme.of(context).colorScheme.primary,
),
recognizer: TapGestureRecognizer()
..onTap = () => {print('跳转至用户主页')}),
TextSpan(
text: replies![index].content.message,
style: TextStyle(
fontSize:
Theme.of(context).textTheme.titleSmall!.fontSize,
),
)
],
),
),
);
}
},
),
),
);
}
}

View File

@ -77,11 +77,15 @@ class ReplyItemModel {
action = json['action'];
member = ReplyMember.fromJson(json['member']);
content = ReplyContent.fromJson(json['content']);
replies = json['replies'];
replies = json['replies'] != null
? json['replies'].map((item) => ReplyItemModel.fromJson(item)).toList()
: [];
assist = json['assist'];
upAction = UpAction.fromJson(json['up_action']);
invisible = json['invisible'];
replyControl = ReplyControl.fromJson(json['reply_control']);
replyControl = json['reply_control'] == null
? null
: ReplyControl.fromJson(json['reply_control']);
}
}
@ -101,6 +105,8 @@ class ReplyControl {
ReplyControl({
this.upReply,
this.isUpTop,
this.upLike,
this.isShow,
this.entryText,
this.titleText,
this.time,
@ -109,14 +115,28 @@ class ReplyControl {
bool? upReply;
bool? isUpTop;
bool? upLike;
bool? isShow;
String? entryText;
String? titleText;
String? time;
String? location;
ReplyControl.fromJson(Map<String, dynamic> json) {
upReply = json['up_reply'];
isUpTop = json['is_up_top'];
upReply = json['up_reply'] ?? false;
isUpTop = json['is_up_top'] ?? false;
upLike = json['up_like'] ?? false;
if (json['sub_reply_entry_text'] == null) {
final RegExp regex = RegExp(r"\d+");
final RegExpMatch match = regex.firstMatch(
json['sub_reply_entry_text'] == null
? ''
: json['sub_reply_entry_text']!)!;
isShow = int.parse(match.group(0)!) >= 3;
} else {
isShow = false;
}
entryText = json['sub_reply_entry_text'];
titleText = json['sub_reply_title_text'];
time = json['time_desc'];

View File

@ -16,7 +16,6 @@ class VideoReplyController extends GetxController {
var res = await ReplyHttp.replyList(oid: aid, pageNum: 1, type: 1);
if (res['status']) {
res['data'] = ReplyData.fromJson(res['data']);
print(res['data'].replies);
}
return res;
}

View File

@ -12,10 +12,15 @@ class VideoReplyPanel extends StatefulWidget {
State<VideoReplyPanel> createState() => _VideoReplyPanelState();
}
class _VideoReplyPanelState extends State<VideoReplyPanel> {
class _VideoReplyPanelState extends State<VideoReplyPanel>
with AutomaticKeepAliveClientMixin {
final VideoReplyController _videoReplyController =
Get.put(VideoReplyController(), tag: Get.arguments['heroTag']);
// 添加页面缓存
@override
bool get wantKeepAlive => true;
@override
Widget build(BuildContext context) {
return FutureBuilder(

View File

@ -6,7 +6,7 @@ packages:
description:
name: args
sha256: "4cab82a83ffef80b262ddedf47a0a8e56ee6fbf7fe21e6e768b02792034dd440"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.4.0"
async:
@ -14,7 +14,7 @@ packages:
description:
name: async
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.10.0"
boolean_selector:
@ -22,7 +22,7 @@ packages:
description:
name: boolean_selector
sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
cached_network_image:
@ -30,7 +30,7 @@ packages:
description:
name: cached_network_image
sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.2.3"
cached_network_image_platform_interface:
@ -38,7 +38,7 @@ packages:
description:
name: cached_network_image_platform_interface
sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.0"
cached_network_image_web:
@ -46,7 +46,7 @@ packages:
description:
name: cached_network_image_web
sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
characters:
@ -54,7 +54,7 @@ packages:
description:
name: characters
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
clock:
@ -62,7 +62,7 @@ packages:
description:
name: clock
sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
collection:
@ -70,7 +70,7 @@ packages:
description:
name: collection
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.17.0"
connectivity_plus:
@ -78,7 +78,7 @@ packages:
description:
name: connectivity_plus
sha256: d73575bb66216738db892f72ba67dc478bd3b5490fbbcf43644b57645eabc822
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.4"
connectivity_plus_platform_interface:
@ -86,7 +86,7 @@ packages:
description:
name: connectivity_plus_platform_interface
sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.4"
cookie_jar:
@ -94,7 +94,7 @@ packages:
description:
name: cookie_jar
sha256: d1cc6516a190ba667941f722b6365d202caff3dacb38de24268b8d6ff1ec8a1d
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
crypto:
@ -102,7 +102,7 @@ packages:
description:
name: crypto
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
cupertino_icons:
@ -110,7 +110,7 @@ packages:
description:
name: cupertino_icons
sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.5"
dbus:
@ -118,7 +118,7 @@ packages:
description:
name: dbus
sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.7.8"
dio:
@ -126,7 +126,7 @@ packages:
description:
name: dio
sha256: "0894a098594263fe1caaba3520e3016d8a855caeb010a882273189cca10f11e9"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.1.1"
dio_cookie_manager:
@ -134,7 +134,7 @@ packages:
description:
name: dio_cookie_manager
sha256: b45f11c2fcbccf39c5952ab68910b3a155486c4fa730ceb4ce867c4943169ea1
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
dio_http2_adapter:
@ -142,7 +142,7 @@ packages:
description:
name: dio_http2_adapter
sha256: b06a02faaff972c4809c4ada7a2f71f6c74ce21f0feee79b357f2a9590c049d4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
dynamic_color:
@ -150,7 +150,7 @@ packages:
description:
name: dynamic_color
sha256: bbebb1b7ebed819e0ec83d4abdc2a8482d934f6a85289ffc1c6acf7589fa2aad
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.6.3"
fake_async:
@ -158,7 +158,7 @@ packages:
description:
name: fake_async
sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
ffi:
@ -166,7 +166,7 @@ packages:
description:
name: ffi
sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
file:
@ -174,7 +174,7 @@ packages:
description:
name: file
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.1.4"
flutter:
@ -187,7 +187,7 @@ packages:
description:
name: flutter_blurhash
sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
flutter_cache_manager:
@ -195,7 +195,7 @@ packages:
description:
name: flutter_cache_manager
sha256: "32cd900555219333326a2d0653aaaf8671264c29befa65bbd9856d204a4c9fb3"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.3.0"
flutter_lints:
@ -203,7 +203,7 @@ packages:
description:
name: flutter_lints
sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
flutter_test:
@ -221,7 +221,7 @@ packages:
description:
name: get
sha256: "2ba20a47c8f1f233bed775ba2dd0d3ac97b4cf32fc17731b3dfc672b06b0e92a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.6.5"
http:
@ -229,7 +229,7 @@ packages:
description:
name: http
sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.13.5"
http2:
@ -237,7 +237,7 @@ packages:
description:
name: http2
sha256: "58805ebc6513eed3b98ee0a455a8357e61d187bf2e0fdc1e53120770f78de258"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
http_parser:
@ -245,7 +245,7 @@ packages:
description:
name: http_parser
sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.0.2"
js:
@ -253,7 +253,7 @@ packages:
description:
name: js
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.6.5"
lints:
@ -261,7 +261,7 @@ packages:
description:
name: lints
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.1"
matcher:
@ -269,7 +269,7 @@ packages:
description:
name: matcher
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.12.13"
material_color_utilities:
@ -277,7 +277,7 @@ packages:
description:
name: material_color_utilities
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.2.0"
meta:
@ -285,7 +285,7 @@ packages:
description:
name: meta
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.8.0"
nm:
@ -293,7 +293,7 @@ packages:
description:
name: nm
sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.5.0"
octo_image:
@ -301,7 +301,7 @@ packages:
description:
name: octo_image
sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.2"
path:
@ -309,7 +309,7 @@ packages:
description:
name: path
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.8.2"
path_provider:
@ -317,7 +317,7 @@ packages:
description:
name: path_provider
sha256: c7edf82217d4b2952b2129a61d3ad60f1075b9299e629e149a8d2e39c2e6aad4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.14"
path_provider_android:
@ -325,7 +325,7 @@ packages:
description:
name: path_provider_android
sha256: da97262be945a72270513700a92b39dd2f4a54dad55d061687e2e37a6390366a
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.25"
path_provider_foundation:
@ -333,7 +333,7 @@ packages:
description:
name: path_provider_foundation
sha256: ad4c4d011830462633f03eb34445a45345673dfd4faf1ab0b4735fbd93b19183
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.2"
path_provider_linux:
@ -341,7 +341,7 @@ packages:
description:
name: path_provider_linux
sha256: "2ae08f2216225427e64ad224a24354221c2c7907e448e6e0e8b57b1eb9f10ad1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.10"
path_provider_platform_interface:
@ -349,7 +349,7 @@ packages:
description:
name: path_provider_platform_interface
sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.0.6"
path_provider_windows:
@ -357,7 +357,7 @@ packages:
description:
name: path_provider_windows
sha256: f53720498d5a543f9607db4b0e997c4b5438884de25b0f73098cc2671a51b130
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.5"
pedantic:
@ -365,7 +365,7 @@ packages:
description:
name: pedantic
sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.11.1"
petitparser:
@ -373,7 +373,7 @@ packages:
description:
name: petitparser
sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.1.0"
platform:
@ -381,7 +381,7 @@ packages:
description:
name: platform
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
plugin_platform_interface:
@ -389,7 +389,7 @@ packages:
description:
name: plugin_platform_interface
sha256: "6a2128648c854906c53fa8e33986fc0247a1116122f9534dd20e3ab9e16a32bc"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
process:
@ -397,7 +397,7 @@ packages:
description:
name: process
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.2.4"
rxdart:
@ -405,7 +405,7 @@ packages:
description:
name: rxdart
sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.27.7"
sky_engine:
@ -418,31 +418,31 @@ packages:
description:
name: source_span
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
sqflite:
dependency: transitive
description:
name: sqflite
sha256: "500d6fec583d2c021f2d25a056d96654f910662c64f836cd2063167b8f1fa758"
url: "https://pub.flutter-io.cn"
sha256: e7dfb6482d5d02b661d0b2399efa72b98909e5aa7b8336e1fb37e226264ade00
url: "https://pub.dev"
source: hosted
version: "2.2.6"
version: "2.2.7"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
sha256: "963dad8c4aa2f814ce7d2d5b1da2f36f31bd1a439d8f27e3dc189bb9d26bc684"
url: "https://pub.flutter-io.cn"
sha256: "220831bf0bd5333ff2445eee35ec131553b804e6b5d47a4a37ca6f5eb66e282c"
url: "https://pub.dev"
source: hosted
version: "2.4.3"
version: "2.4.4"
stack_trace:
dependency: transitive
description:
name: stack_trace
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.11.0"
stream_channel:
@ -450,7 +450,7 @@ packages:
description:
name: stream_channel
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.1"
string_scanner:
@ -458,23 +458,23 @@ packages:
description:
name: string_scanner
sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.0"
synchronized:
dependency: transitive
description:
name: synchronized
sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b"
url: "https://pub.flutter-io.cn"
sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
url: "https://pub.dev"
source: hosted
version: "3.0.1"
version: "3.1.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.1"
test_api:
@ -482,7 +482,7 @@ packages:
description:
name: test_api
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.4.16"
typed_data:
@ -490,7 +490,7 @@ packages:
description:
name: typed_data
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.1"
uuid:
@ -498,7 +498,7 @@ packages:
description:
name: uuid
sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.7"
vector_math:
@ -506,7 +506,7 @@ packages:
description:
name: vector_math
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
win32:
@ -514,7 +514,7 @@ packages:
description:
name: win32
sha256: a6f0236dbda0f63aa9a25ad1ff9a9d8a4eaaa5012da0dc59d21afdb1dc361ca4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.4"
xdg_directories:
@ -522,7 +522,7 @@ packages:
description:
name: xdg_directories
sha256: ee1505df1426458f7f60aac270645098d318a8b4766d85fde75f76f2e21807d1
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
xml:
@ -530,7 +530,7 @@ packages:
description:
name: xml
sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "6.2.2"
sdks: