reason

增加支付

......@@ -30,8 +30,25 @@
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name="com.braintreepayments.api.BraintreeBrowserSwitchActivity"
android:launchMode="singleTask"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="pub.yiyan.parlando.Parlando.braintree" />
</intent-filter>
</activity>
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<meta-data
android:name="com.google.android.gms.wallet.api.enabled"
android:value="true" />
</application>
</manifest>
......
......@@ -344,6 +344,7 @@ class MapScreenState extends State<AccountEditPage>
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 2,
child: Text(
ParlandoLocalizations.of(context)
.accountEditPageUserGender,
......@@ -352,9 +353,9 @@ class MapScreenState extends State<AccountEditPage>
fontWeight: FontWeight.bold,
),
),
flex: 2,
),
Expanded(
flex: 2,
child: Text(
ParlandoLocalizations.of(context)
.accountEditPageUserBirthday,
......@@ -363,7 +364,6 @@ class MapScreenState extends State<AccountEditPage>
fontWeight: FontWeight.bold,
),
),
flex: 2,
),
],
)),
......@@ -378,6 +378,7 @@ class MapScreenState extends State<AccountEditPage>
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Flexible(
flex: 2,
child: Padding(
padding: EdgeInsets.only(right: 10.px),
child: TextField(
......@@ -389,9 +390,9 @@ class MapScreenState extends State<AccountEditPage>
enabled: !_status,
),
),
flex: 2,
),
Flexible(
flex: 2,
child: TextField(
decoration: InputDecoration(
hintText: ParlandoLocalizations.of(
......@@ -400,7 +401,6 @@ class MapScreenState extends State<AccountEditPage>
),
enabled: !_status,
),
flex: 2,
),
],
)),
......@@ -436,6 +436,7 @@ class MapScreenState extends State<AccountEditPage>
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
Expanded(
flex: 2,
child: Padding(
padding: EdgeInsets.only(right: 10.px),
child: ElevatedButton(
......@@ -448,9 +449,9 @@ class MapScreenState extends State<AccountEditPage>
},
),
),
flex: 2,
),
Expanded(
flex: 2,
child: Padding(
padding: EdgeInsets.only(left: 10.px),
child: ElevatedButton(
......@@ -465,7 +466,6 @@ class MapScreenState extends State<AccountEditPage>
},
),
),
flex: 2,
),
],
),
......
......@@ -11,7 +11,6 @@ import 'package:cached_network_image/cached_network_image.dart';
import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';
import 'package:Parlando/membership/membership_router.dart';
import 'package:Parlando/poem/poem_router.dart';
import 'package:Parlando/routers/fluro_navigator.dart';
import 'package:Parlando/setting/setting_router.dart';
import 'package:Parlando/tiktok/style/style.dart';
......
......@@ -13,12 +13,16 @@ import 'package:Parlando/category/models/category_item_entity.dart';
import 'package:Parlando/home/models/home_entity.dart';
import 'package:Parlando/home/models/setting_entity.dart';
import 'package:Parlando/login/models/auth_entity.dart';
import 'package:Parlando/membership/models/membership_entity.dart';
import 'package:Parlando/membership/models/order_entity.dart';
import 'package:Parlando/membership/models/pay_entity.dart';
import 'package:Parlando/models/upload_entity.dart';
import 'package:Parlando/poem/models/lang_sort_entity.dart';
import 'package:Parlando/poem/models/search_entity.dart';
import 'package:Parlando/timeline/models/friend_entity.dart';
JsonConvert jsonConvert = JsonConvert();
typedef JsonConvertFunction<T> = T Function(Map<String, dynamic> json);
class JsonConvert {
......@@ -54,6 +58,21 @@ class JsonConvert {
(AuthEntity).toString(): AuthEntity.fromJson,
(AuthData).toString(): AuthData.fromJson,
(AuthError).toString(): AuthError.fromJson,
(MembershipEntity).toString(): MembershipEntity.fromJson,
(MembershipData).toString(): MembershipData.fromJson,
(MembershipDataGoodsList).toString(): MembershipDataGoodsList.fromJson,
(MembershipError).toString(): MembershipError.fromJson,
(OrderEntity).toString(): OrderEntity.fromJson,
(OrderData).toString(): OrderData.fromJson,
(OrderError).toString(): OrderError.fromJson,
(PayEntity).toString(): PayEntity.fromJson,
(PayData).toString(): PayData.fromJson,
(PayDataPurchaseUnits).toString(): PayDataPurchaseUnits.fromJson,
(PayDataPurchaseUnitsAmount).toString():
PayDataPurchaseUnitsAmount.fromJson,
(PayDataPurchaseUnitsPayee).toString(): PayDataPurchaseUnitsPayee.fromJson,
(PayDataLinks).toString(): PayDataLinks.fromJson,
(PayError).toString(): PayError.fromJson,
(UploadEntity).toString(): UploadEntity.fromJson,
(UploadData).toString(): UploadData.fromJson,
(UploadError).toString(): UploadError.fromJson,
......@@ -306,6 +325,84 @@ class JsonConvert {
.map<AuthError>((Map<String, dynamic> e) => AuthError.fromJson(e))
.toList() as M;
}
if (<MembershipEntity>[] is M) {
return data
.map<MembershipEntity>(
(Map<String, dynamic> e) => MembershipEntity.fromJson(e))
.toList() as M;
}
if (<MembershipData>[] is M) {
return data
.map<MembershipData>(
(Map<String, dynamic> e) => MembershipData.fromJson(e))
.toList() as M;
}
if (<MembershipDataGoodsList>[] is M) {
return data
.map<MembershipDataGoodsList>(
(Map<String, dynamic> e) => MembershipDataGoodsList.fromJson(e))
.toList() as M;
}
if (<MembershipError>[] is M) {
return data
.map<MembershipError>(
(Map<String, dynamic> e) => MembershipError.fromJson(e))
.toList() as M;
}
if (<OrderEntity>[] is M) {
return data
.map<OrderEntity>((Map<String, dynamic> e) => OrderEntity.fromJson(e))
.toList() as M;
}
if (<OrderData>[] is M) {
return data
.map<OrderData>((Map<String, dynamic> e) => OrderData.fromJson(e))
.toList() as M;
}
if (<OrderError>[] is M) {
return data
.map<OrderError>((Map<String, dynamic> e) => OrderError.fromJson(e))
.toList() as M;
}
if (<PayEntity>[] is M) {
return data
.map<PayEntity>((Map<String, dynamic> e) => PayEntity.fromJson(e))
.toList() as M;
}
if (<PayData>[] is M) {
return data
.map<PayData>((Map<String, dynamic> e) => PayData.fromJson(e))
.toList() as M;
}
if (<PayDataPurchaseUnits>[] is M) {
return data
.map<PayDataPurchaseUnits>(
(Map<String, dynamic> e) => PayDataPurchaseUnits.fromJson(e))
.toList() as M;
}
if (<PayDataPurchaseUnitsAmount>[] is M) {
return data
.map<PayDataPurchaseUnitsAmount>((Map<String, dynamic> e) =>
PayDataPurchaseUnitsAmount.fromJson(e))
.toList() as M;
}
if (<PayDataPurchaseUnitsPayee>[] is M) {
return data
.map<PayDataPurchaseUnitsPayee>(
(Map<String, dynamic> e) => PayDataPurchaseUnitsPayee.fromJson(e))
.toList() as M;
}
if (<PayDataLinks>[] is M) {
return data
.map<PayDataLinks>(
(Map<String, dynamic> e) => PayDataLinks.fromJson(e))
.toList() as M;
}
if (<PayError>[] is M) {
return data
.map<PayError>((Map<String, dynamic> e) => PayError.fromJson(e))
.toList() as M;
}
if (<UploadEntity>[] is M) {
return data
.map<UploadEntity>(
......
import 'package:Parlando/generated/json/base/json_convert_content.dart';
import 'package:Parlando/membership/models/membership_entity.dart';
MembershipEntity $MembershipEntityFromJson(Map<String, dynamic> json) {
final MembershipEntity membershipEntity = MembershipEntity();
final String? status = jsonConvert.convert<String>(json['status']);
if (status != null) {
membershipEntity.status = status;
}
final int? code = jsonConvert.convert<int>(json['code']);
if (code != null) {
membershipEntity.code = code;
}
final String? message = jsonConvert.convert<String>(json['message']);
if (message != null) {
membershipEntity.message = message;
}
final MembershipData? data =
jsonConvert.convert<MembershipData>(json['data']);
if (data != null) {
membershipEntity.data = data;
}
final MembershipError? error =
jsonConvert.convert<MembershipError>(json['error']);
if (error != null) {
membershipEntity.error = error;
}
return membershipEntity;
}
Map<String, dynamic> $MembershipEntityToJson(MembershipEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['status'] = entity.status;
data['code'] = entity.code;
data['message'] = entity.message;
data['data'] = entity.data?.toJson();
data['error'] = entity.error?.toJson();
return data;
}
MembershipData $MembershipDataFromJson(Map<String, dynamic> json) {
final MembershipData membershipData = MembershipData();
final int? id = jsonConvert.convert<int>(json['id']);
if (id != null) {
membershipData.id = id;
}
final String? title = jsonConvert.convert<String>(json['title']);
if (title != null) {
membershipData.title = title;
}
final String? intro = jsonConvert.convert<String>(json['intro']);
if (intro != null) {
membershipData.intro = intro;
}
final String? bgType = jsonConvert.convert<String>(json['bg_type']);
if (bgType != null) {
membershipData.bgType = bgType;
}
final String? bgImages = jsonConvert.convert<String>(json['bg_images']);
if (bgImages != null) {
membershipData.bgImages = bgImages;
}
final String? videoUrl = jsonConvert.convert<String>(json['video_url']);
if (videoUrl != null) {
membershipData.videoUrl = videoUrl;
}
final String? videoCover = jsonConvert.convert<String>(json['video_cover']);
if (videoCover != null) {
membershipData.videoCover = videoCover;
}
final String? terminal = jsonConvert.convert<String>(json['terminal']);
if (terminal != null) {
membershipData.terminal = terminal;
}
final String? state = jsonConvert.convert<String>(json['state']);
if (state != null) {
membershipData.state = state;
}
final String? createdAt = jsonConvert.convert<String>(json['created_at']);
if (createdAt != null) {
membershipData.createdAt = createdAt;
}
final String? updatedAt = jsonConvert.convert<String>(json['updated_at']);
if (updatedAt != null) {
membershipData.updatedAt = updatedAt;
}
final int? isVip = jsonConvert.convert<int>(json['is_vip']);
if (isVip != null) {
membershipData.isVip = isVip;
}
final List<MembershipDataGoodsList>? goodsList = jsonConvert
.convertListNotNull<MembershipDataGoodsList>(json['goods_list']);
if (goodsList != null) {
membershipData.goodsList = goodsList;
}
return membershipData;
}
Map<String, dynamic> $MembershipDataToJson(MembershipData entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = entity.id;
data['title'] = entity.title;
data['intro'] = entity.intro;
data['bg_type'] = entity.bgType;
data['bg_images'] = entity.bgImages;
data['video_url'] = entity.videoUrl;
data['video_cover'] = entity.videoCover;
data['terminal'] = entity.terminal;
data['state'] = entity.state;
data['created_at'] = entity.createdAt;
data['updated_at'] = entity.updatedAt;
data['is_vip'] = entity.isVip;
data['goods_list'] = entity.goodsList?.map((v) => v.toJson()).toList();
return data;
}
MembershipDataGoodsList $MembershipDataGoodsListFromJson(
Map<String, dynamic> json) {
final MembershipDataGoodsList membershipDataGoodsList =
MembershipDataGoodsList();
final int? id = jsonConvert.convert<int>(json['id']);
if (id != null) {
membershipDataGoodsList.id = id;
}
final String? membershipId =
jsonConvert.convert<String>(json['membership_id']);
if (membershipId != null) {
membershipDataGoodsList.membershipId = membershipId;
}
final String? name = jsonConvert.convert<String>(json['name']);
if (name != null) {
membershipDataGoodsList.name = name;
}
final String? price = jsonConvert.convert<String>(json['price']);
if (price != null) {
membershipDataGoodsList.price = price;
}
final String? linePrice = jsonConvert.convert<String>(json['line_price']);
if (linePrice != null) {
membershipDataGoodsList.linePrice = linePrice;
}
final String? limitDays = jsonConvert.convert<String>(json['limit_days']);
if (limitDays != null) {
membershipDataGoodsList.limitDays = limitDays;
}
final String? limitUnit = jsonConvert.convert<String>(json['limit_unit']);
if (limitUnit != null) {
membershipDataGoodsList.limitUnit = limitUnit;
}
final String? terminal = jsonConvert.convert<String>(json['terminal']);
if (terminal != null) {
membershipDataGoodsList.terminal = terminal;
}
final String? state = jsonConvert.convert<String>(json['state']);
if (state != null) {
membershipDataGoodsList.state = state;
}
final String? sn = jsonConvert.convert<String>(json['sn']);
if (sn != null) {
membershipDataGoodsList.sn = sn;
}
final String? visits = jsonConvert.convert<String>(json['visits']);
if (visits != null) {
membershipDataGoodsList.visits = visits;
}
final String? virtualSales =
jsonConvert.convert<String>(json['virtual_sales']);
if (virtualSales != null) {
membershipDataGoodsList.virtualSales = virtualSales;
}
final String? sales = jsonConvert.convert<String>(json['sales']);
if (sales != null) {
membershipDataGoodsList.sales = sales;
}
final String? stocks = jsonConvert.convert<String>(json['stocks']);
if (stocks != null) {
membershipDataGoodsList.stocks = stocks;
}
final String? createdAt = jsonConvert.convert<String>(json['created_at']);
if (createdAt != null) {
membershipDataGoodsList.createdAt = createdAt;
}
final String? updatedAt = jsonConvert.convert<String>(json['updated_at']);
if (updatedAt != null) {
membershipDataGoodsList.updatedAt = updatedAt;
}
return membershipDataGoodsList;
}
Map<String, dynamic> $MembershipDataGoodsListToJson(
MembershipDataGoodsList entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = entity.id;
data['membership_id'] = entity.membershipId;
data['name'] = entity.name;
data['price'] = entity.price;
data['line_price'] = entity.linePrice;
data['limit_days'] = entity.limitDays;
data['limit_unit'] = entity.limitUnit;
data['terminal'] = entity.terminal;
data['state'] = entity.state;
data['sn'] = entity.sn;
data['visits'] = entity.visits;
data['virtual_sales'] = entity.virtualSales;
data['sales'] = entity.sales;
data['stocks'] = entity.stocks;
data['created_at'] = entity.createdAt;
data['updated_at'] = entity.updatedAt;
return data;
}
MembershipError $MembershipErrorFromJson(Map<String, dynamic> json) {
final MembershipError membershipError = MembershipError();
return membershipError;
}
Map<String, dynamic> $MembershipErrorToJson(MembershipError entity) {
final Map<String, dynamic> data = <String, dynamic>{};
return data;
}
import 'package:Parlando/generated/json/base/json_convert_content.dart';
import 'package:Parlando/membership/models/order_entity.dart';
OrderEntity $OrderEntityFromJson(Map<String, dynamic> json) {
final OrderEntity orderEntity = OrderEntity();
final String? status = jsonConvert.convert<String>(json['status']);
if (status != null) {
orderEntity.status = status;
}
final int? code = jsonConvert.convert<int>(json['code']);
if (code != null) {
orderEntity.code = code;
}
final String? message = jsonConvert.convert<String>(json['message']);
if (message != null) {
orderEntity.message = message;
}
final OrderData? data = jsonConvert.convert<OrderData>(json['data']);
if (data != null) {
orderEntity.data = data;
}
final OrderError? error = jsonConvert.convert<OrderError>(json['error']);
if (error != null) {
orderEntity.error = error;
}
return orderEntity;
}
Map<String, dynamic> $OrderEntityToJson(OrderEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['status'] = entity.status;
data['code'] = entity.code;
data['message'] = entity.message;
data['data'] = entity.data?.toJson();
data['error'] = entity.error?.toJson();
return data;
}
OrderData $OrderDataFromJson(Map<String, dynamic> json) {
final OrderData orderData = OrderData();
final String? orderSn = jsonConvert.convert<String>(json['order_sn']);
if (orderSn != null) {
orderData.orderSn = orderSn;
}
return orderData;
}
Map<String, dynamic> $OrderDataToJson(OrderData entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['order_sn'] = entity.orderSn;
return data;
}
OrderError $OrderErrorFromJson(Map<String, dynamic> json) {
final OrderError orderError = OrderError();
return orderError;
}
Map<String, dynamic> $OrderErrorToJson(OrderError entity) {
final Map<String, dynamic> data = <String, dynamic>{};
return data;
}
import 'package:Parlando/generated/json/base/json_convert_content.dart';
import 'package:Parlando/membership/models/pay_entity.dart';
PayEntity $PayEntityFromJson(Map<String, dynamic> json) {
final PayEntity payEntity = PayEntity();
final String? status = jsonConvert.convert<String>(json['status']);
if (status != null) {
payEntity.status = status;
}
final int? code = jsonConvert.convert<int>(json['code']);
if (code != null) {
payEntity.code = code;
}
final String? message = jsonConvert.convert<String>(json['message']);
if (message != null) {
payEntity.message = message;
}
final PayData? data = jsonConvert.convert<PayData>(json['data']);
if (data != null) {
payEntity.data = data;
}
final PayError? error = jsonConvert.convert<PayError>(json['error']);
if (error != null) {
payEntity.error = error;
}
return payEntity;
}
Map<String, dynamic> $PayEntityToJson(PayEntity entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['status'] = entity.status;
data['code'] = entity.code;
data['message'] = entity.message;
data['data'] = entity.data?.toJson();
data['error'] = entity.error?.toJson();
return data;
}
PayData $PayDataFromJson(Map<String, dynamic> json) {
final PayData payData = PayData();
final String? id = jsonConvert.convert<String>(json['id']);
if (id != null) {
payData.id = id;
}
final String? intent = jsonConvert.convert<String>(json['intent']);
if (intent != null) {
payData.intent = intent;
}
final String? status = jsonConvert.convert<String>(json['status']);
if (status != null) {
payData.status = status;
}
final List<PayDataPurchaseUnits>? purchaseUnits = jsonConvert
.convertListNotNull<PayDataPurchaseUnits>(json['purchase_units']);
if (purchaseUnits != null) {
payData.purchaseUnits = purchaseUnits;
}
final String? createTime = jsonConvert.convert<String>(json['create_time']);
if (createTime != null) {
payData.createTime = createTime;
}
final List<PayDataLinks>? links =
jsonConvert.convertListNotNull<PayDataLinks>(json['links']);
if (links != null) {
payData.links = links;
}
return payData;
}
Map<String, dynamic> $PayDataToJson(PayData entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['id'] = entity.id;
data['intent'] = entity.intent;
data['status'] = entity.status;
data['purchase_units'] =
entity.purchaseUnits?.map((v) => v.toJson()).toList();
data['create_time'] = entity.createTime;
data['links'] = entity.links?.map((v) => v.toJson()).toList();
return data;
}
PayDataPurchaseUnits $PayDataPurchaseUnitsFromJson(Map<String, dynamic> json) {
final PayDataPurchaseUnits payDataPurchaseUnits = PayDataPurchaseUnits();
final String? referenceId = jsonConvert.convert<String>(json['reference_id']);
if (referenceId != null) {
payDataPurchaseUnits.referenceId = referenceId;
}
final PayDataPurchaseUnitsAmount? amount =
jsonConvert.convert<PayDataPurchaseUnitsAmount>(json['amount']);
if (amount != null) {
payDataPurchaseUnits.amount = amount;
}
final PayDataPurchaseUnitsPayee? payee =
jsonConvert.convert<PayDataPurchaseUnitsPayee>(json['payee']);
if (payee != null) {
payDataPurchaseUnits.payee = payee;
}
final String? description = jsonConvert.convert<String>(json['description']);
if (description != null) {
payDataPurchaseUnits.description = description;
}
final String? customId = jsonConvert.convert<String>(json['custom_id']);
if (customId != null) {
payDataPurchaseUnits.customId = customId;
}
final String? softDescriptor =
jsonConvert.convert<String>(json['soft_descriptor']);
if (softDescriptor != null) {
payDataPurchaseUnits.softDescriptor = softDescriptor;
}
return payDataPurchaseUnits;
}
Map<String, dynamic> $PayDataPurchaseUnitsToJson(PayDataPurchaseUnits entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['reference_id'] = entity.referenceId;
data['amount'] = entity.amount?.toJson();
data['payee'] = entity.payee?.toJson();
data['description'] = entity.description;
data['custom_id'] = entity.customId;
data['soft_descriptor'] = entity.softDescriptor;
return data;
}
PayDataPurchaseUnitsAmount $PayDataPurchaseUnitsAmountFromJson(
Map<String, dynamic> json) {
final PayDataPurchaseUnitsAmount payDataPurchaseUnitsAmount =
PayDataPurchaseUnitsAmount();
final String? currencyCode =
jsonConvert.convert<String>(json['currency_code']);
if (currencyCode != null) {
payDataPurchaseUnitsAmount.currencyCode = currencyCode;
}
final String? value = jsonConvert.convert<String>(json['value']);
if (value != null) {
payDataPurchaseUnitsAmount.value = value;
}
return payDataPurchaseUnitsAmount;
}
Map<String, dynamic> $PayDataPurchaseUnitsAmountToJson(
PayDataPurchaseUnitsAmount entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['currency_code'] = entity.currencyCode;
data['value'] = entity.value;
return data;
}
PayDataPurchaseUnitsPayee $PayDataPurchaseUnitsPayeeFromJson(
Map<String, dynamic> json) {
final PayDataPurchaseUnitsPayee payDataPurchaseUnitsPayee =
PayDataPurchaseUnitsPayee();
final String? emailAddress =
jsonConvert.convert<String>(json['email_address']);
if (emailAddress != null) {
payDataPurchaseUnitsPayee.emailAddress = emailAddress;
}
final String? merchantId = jsonConvert.convert<String>(json['merchant_id']);
if (merchantId != null) {
payDataPurchaseUnitsPayee.merchantId = merchantId;
}
return payDataPurchaseUnitsPayee;
}
Map<String, dynamic> $PayDataPurchaseUnitsPayeeToJson(
PayDataPurchaseUnitsPayee entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['email_address'] = entity.emailAddress;
data['merchant_id'] = entity.merchantId;
return data;
}
PayDataLinks $PayDataLinksFromJson(Map<String, dynamic> json) {
final PayDataLinks payDataLinks = PayDataLinks();
final String? href = jsonConvert.convert<String>(json['href']);
if (href != null) {
payDataLinks.href = href;
}
final String? rel = jsonConvert.convert<String>(json['rel']);
if (rel != null) {
payDataLinks.rel = rel;
}
final String? method = jsonConvert.convert<String>(json['method']);
if (method != null) {
payDataLinks.method = method;
}
return payDataLinks;
}
Map<String, dynamic> $PayDataLinksToJson(PayDataLinks entity) {
final Map<String, dynamic> data = <String, dynamic>{};
data['href'] = entity.href;
data['rel'] = entity.rel;
data['method'] = entity.method;
return data;
}
PayError $PayErrorFromJson(Map<String, dynamic> json) {
final PayError payError = PayError();
return payError;
}
Map<String, dynamic> $PayErrorToJson(PayError entity) {
final Map<String, dynamic> data = <String, dynamic>{};
return data;
}
......@@ -164,4 +164,4 @@ VideoError $VideoErrorFromJson(Map<String, dynamic> json) {
Map<String, dynamic> $VideoErrorToJson(VideoError entity) {
final Map<String, dynamic> data = <String, dynamic>{};
return data;
}
}
\ No newline at end of file
......
import 'package:Parlando/account/view_models/account_view_model.dart';
import 'package:Parlando/membership/view_models/membership_view_model.dart';
import 'package:dio/dio.dart';
import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';
......@@ -128,7 +129,8 @@ class MyApp extends StatelessWidget {
providers: [
ChangeNotifierProvider(create: (_) => ThemeProvider()),
ChangeNotifierProvider(create: (_) => LocaleProvider()),
ChangeNotifierProvider(create: (_) => AccountViewProvider())
ChangeNotifierProvider(create: (_) => AccountViewProvider()),
ChangeNotifierProvider(create: (_) => MembershipViewProvider())
],
child: Consumer2<ThemeProvider, LocaleProvider>(
builder:
......
import 'dart:convert';
import 'package:Parlando/generated/json/base/json_field.dart';
import 'package:Parlando/generated/json/membership_entity.g.dart';
@JsonSerializable()
class MembershipEntity {
String? status;
int? code;
String? message;
MembershipData? data;
MembershipError? error;
MembershipEntity();
factory MembershipEntity.fromJson(Map<String, dynamic> json) =>
$MembershipEntityFromJson(json);
Map<String, dynamic> toJson() => $MembershipEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class MembershipData {
int? id;
String? title;
String? intro;
@JSONField(name: "bg_type")
String? bgType;
@JSONField(name: "bg_images")
String? bgImages;
@JSONField(name: "video_url")
String? videoUrl;
@JSONField(name: "video_cover")
String? videoCover;
String? terminal;
String? state;
@JSONField(name: "created_at")
String? createdAt;
@JSONField(name: "updated_at")
String? updatedAt;
@JSONField(name: "is_vip")
int? isVip;
@JSONField(name: "goods_list")
List<MembershipDataGoodsList>? goodsList;
MembershipData();
factory MembershipData.fromJson(Map<String, dynamic> json) =>
$MembershipDataFromJson(json);
Map<String, dynamic> toJson() => $MembershipDataToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class MembershipDataGoodsList {
int? id;
@JSONField(name: "membership_id")
String? membershipId;
String? name;
String? price;
@JSONField(name: "line_price")
String? linePrice;
@JSONField(name: "limit_days")
String? limitDays;
@JSONField(name: "limit_unit")
String? limitUnit;
String? terminal;
String? state;
String? sn;
String? visits;
@JSONField(name: "virtual_sales")
String? virtualSales;
String? sales;
String? stocks;
@JSONField(name: "created_at")
String? createdAt;
@JSONField(name: "updated_at")
String? updatedAt;
MembershipDataGoodsList();
factory MembershipDataGoodsList.fromJson(Map<String, dynamic> json) =>
$MembershipDataGoodsListFromJson(json);
Map<String, dynamic> toJson() => $MembershipDataGoodsListToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class MembershipError {
MembershipError();
factory MembershipError.fromJson(Map<String, dynamic> json) =>
$MembershipErrorFromJson(json);
Map<String, dynamic> toJson() => $MembershipErrorToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
import 'dart:convert';
import 'package:Parlando/generated/json/base/json_field.dart';
import 'package:Parlando/generated/json/order_entity.g.dart';
@JsonSerializable()
class OrderEntity {
String? status;
int? code;
String? message;
OrderData? data;
OrderError? error;
OrderEntity();
factory OrderEntity.fromJson(Map<String, dynamic> json) =>
$OrderEntityFromJson(json);
Map<String, dynamic> toJson() => $OrderEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class OrderData {
@JSONField(name: "order_sn")
String? orderSn;
OrderData();
factory OrderData.fromJson(Map<String, dynamic> json) =>
$OrderDataFromJson(json);
Map<String, dynamic> toJson() => $OrderDataToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class OrderError {
OrderError();
factory OrderError.fromJson(Map<String, dynamic> json) =>
$OrderErrorFromJson(json);
Map<String, dynamic> toJson() => $OrderErrorToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
import 'dart:convert';
import 'package:Parlando/generated/json/base/json_field.dart';
import 'package:Parlando/generated/json/pay_entity.g.dart';
@JsonSerializable()
class PayEntity {
String? status;
int? code;
String? message;
PayData? data;
PayError? error;
PayEntity();
factory PayEntity.fromJson(Map<String, dynamic> json) =>
$PayEntityFromJson(json);
Map<String, dynamic> toJson() => $PayEntityToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class PayData {
String? id;
String? intent;
String? status;
@JSONField(name: "purchase_units")
List<PayDataPurchaseUnits>? purchaseUnits;
@JSONField(name: "create_time")
String? createTime;
List<PayDataLinks>? links;
PayData();
factory PayData.fromJson(Map<String, dynamic> json) => $PayDataFromJson(json);
Map<String, dynamic> toJson() => $PayDataToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class PayDataPurchaseUnits {
@JSONField(name: "reference_id")
String? referenceId;
PayDataPurchaseUnitsAmount? amount;
PayDataPurchaseUnitsPayee? payee;
String? description;
@JSONField(name: "custom_id")
String? customId;
@JSONField(name: "soft_descriptor")
String? softDescriptor;
PayDataPurchaseUnits();
factory PayDataPurchaseUnits.fromJson(Map<String, dynamic> json) =>
$PayDataPurchaseUnitsFromJson(json);
Map<String, dynamic> toJson() => $PayDataPurchaseUnitsToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class PayDataPurchaseUnitsAmount {
@JSONField(name: "currency_code")
String? currencyCode;
String? value;
PayDataPurchaseUnitsAmount();
factory PayDataPurchaseUnitsAmount.fromJson(Map<String, dynamic> json) =>
$PayDataPurchaseUnitsAmountFromJson(json);
Map<String, dynamic> toJson() => $PayDataPurchaseUnitsAmountToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class PayDataPurchaseUnitsPayee {
@JSONField(name: "email_address")
String? emailAddress;
@JSONField(name: "merchant_id")
String? merchantId;
PayDataPurchaseUnitsPayee();
factory PayDataPurchaseUnitsPayee.fromJson(Map<String, dynamic> json) =>
$PayDataPurchaseUnitsPayeeFromJson(json);
Map<String, dynamic> toJson() => $PayDataPurchaseUnitsPayeeToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class PayDataLinks {
String? href;
String? rel;
String? method;
PayDataLinks();
factory PayDataLinks.fromJson(Map<String, dynamic> json) =>
$PayDataLinksFromJson(json);
Map<String, dynamic> toJson() => $PayDataLinksToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
@JsonSerializable()
class PayError {
PayError();
factory PayError.fromJson(Map<String, dynamic> json) =>
$PayErrorFromJson(json);
Map<String, dynamic> toJson() => $PayErrorToJson(this);
@override
String toString() {
return jsonEncode(this);
}
}
import 'dart:ui';
import 'package:Parlando/apis/api_response.dart';
import 'package:Parlando/login/login_router.dart';
import 'package:Parlando/membership/models/membership_entity.dart';
import 'package:Parlando/membership/models/order_entity.dart';
import 'package:Parlando/membership/models/pay_entity.dart';
import 'package:Parlando/membership/view_models/membership_view_model.dart';
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:Parlando/res/constant.dart';
import 'package:cached_network_image/cached_network_image.dart';
import 'package:flustars/flustars.dart';
import 'package:flutter/material.dart';
import 'package:Parlando/res/resources.dart';
import 'package:Parlando/routers/fluro_navigator.dart';
import 'package:Parlando/extension/int_extension.dart';
import 'package:Parlando/util/toast_utils.dart';
import 'package:flutter_braintree/flutter_braintree.dart';
import 'package:provider/provider.dart';
class MembershipPage extends StatefulWidget {
const MembershipPage({Key? key}) : super(key: key);
@override
_MembershipPageState createState() => _MembershipPageState();
MembershipPageState createState() => MembershipPageState();
}
class _MembershipPageState extends State<MembershipPage>
class MembershipPageState extends State<MembershipPage>
with WidgetsBindingObserver {
bool _isLoading = false;
@override
void initState() {
super.initState();
if (SpUtil.containsKey(Constant.userToken)!) {
Provider.of<MembershipViewProvider>(context, listen: false)
.setSelectedMembership(null);
Provider.of<MembershipViewProvider>(context, listen: false)
.fetchMembershipData('0');
} else {
NavigatorUtils.push(context, LoginRouter.loginPage, replace: true);
}
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
backgroundColor: Colors.black,
body: Container(
alignment: Alignment.topCenter,
decoration: const BoxDecoration(
image: DecorationImage(
image: AssetImage("assets/images/membership/membership_bg.png"),
fit: BoxFit.fill,
),
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
alignment: Alignment.centerLeft,
child: IconButton(
onPressed: () {
NavigatorUtils.goBack(context);
},
icon: const Icon(
Icons.arrow_back_ios,
color: Colors.white,
),
ApiResponse apiResponse =
Provider.of<MembershipViewProvider>(context).response;
switch (apiResponse.status) {
case Status.LOADING:
return const Center(child: CircularProgressIndicator());
case Status.COMPLETED:
MembershipData mb = apiResponse.data as MembershipData;
return SafeArea(
child: Scaffold(
backgroundColor: Colors.black,
body: Container(
alignment: Alignment.topCenter,
decoration: BoxDecoration(
image: DecorationImage(
image: CachedNetworkImageProvider(mb.bgImages!),
fit: BoxFit.fill,
),
),
const Spacer(),
Container(
margin:
EdgeInsets.symmetric(vertical: 60.px, horizontal: 20.px),
height: MediaQuery.of(context).size.height / 2,
width: double.infinity,
decoration: BoxDecoration(
color: Colors.grey.shade200.withOpacity(0.1),
border: Border.all(
color: Colors.grey.shade50,
width: 0.5,
), // 边色与边宽度
),
child: ClipRect(
child: BackdropFilter(
filter: ImageFilter.blur(
sigmaX: 10.0,
sigmaY: 10.0,
),
child: Container(
decoration: BoxDecoration(
color: Colors.grey.shade200.withOpacity(0.1),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Container(
alignment: Alignment.centerLeft,
child: IconButton(
onPressed: () {
NavigatorUtils.goBack(context);
},
icon: const Icon(
Icons.arrow_back_ios,
color: Colors.white,
),
child: Padding(
padding: EdgeInsets.all(10.px),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
"成为一言会员,将可以享受会员专属临境体验。",
style: TextStyle(
fontSize: 18.px,
color: Colors.white,
),
),
Gaps.vGap24,
// TODO 如果会员则显示会员详情
Expanded(
child: ListView.builder(
itemExtent: 48.0,
itemBuilder: (_, index) {
return _buildItem(index);
},
itemCount: 5,
),
),
Gaps.vGap24,
Text(
"遇到任何问题,请在微信中关注“一言临境”公众号",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
),
Gaps.vGap10,
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.min,
),
),
const Spacer(),
Container(
margin: EdgeInsets.symmetric(
vertical: 60.px, horizontal: 20.px),
height: MediaQuery.of(context).size.height / 2,
width: double.infinity,
decoration: BoxDecoration(
color: Colors.grey.shade200.withOpacity(0.1),
border: Border.all(
color: Colors.grey.shade50,
width: 0.5,
), // 边色与边宽度
),
child: ClipRect(
child: BackdropFilter(
filter: ImageFilter.blur(
sigmaX: 10.0,
sigmaY: 10.0,
),
child: Container(
decoration: BoxDecoration(
color: Colors.grey.shade200.withOpacity(0.1),
),
child: Padding(
padding: EdgeInsets.all(10.px),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TextButton(
onPressed: () {},
child: Text(
"服务协议",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
Text(
mb.title!,
style: TextStyle(
fontSize: 18.px,
color: Colors.white,
),
),
Container(
width: 0.6,
height: 15.0,
color: Colours.line,
),
TextButton(
onPressed: () {},
child: Text(
"隐私政策",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
Gaps.vGap24,
// TODO 如果会员则显示会员详情
Expanded(
child: ListView.builder(
itemExtent: 48.0,
itemBuilder: (_, index) {
return _buildItem(mb.goodsList![index]);
},
itemCount: mb.goodsList!.length,
),
),
Container(
width: 0.6,
height: 15.0,
color: Colours.line,
Gaps.vGap24,
Text(
mb.intro!,
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
),
TextButton(
onPressed: () {},
child: Text(
"恢复购买",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
Gaps.vGap10,
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.center,
children: [
TextButton(
onPressed: () {},
child: Text(
"服务协议",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
),
),
),
Container(
width: 0.6,
height: 15.0,
color: Colours.line,
),
TextButton(
onPressed: () {},
child: Text(
"隐私政策",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
),
),
Container(
width: 0.6,
height: 15.0,
color: Colours.line,
),
TextButton(
onPressed: () {},
child: Text(
"恢复购买",
style: TextStyle(
fontSize: 14.px,
color: Colors.white,
),
),
),
],
),
],
),
],
),
),
),
),
),
),
],
),
],
),
),
),
),
);
);
case Status.ERROR:
return Center(
child: Text('暂时无法获取数据,请稍候再试!${apiResponse.message}'),
);
case Status.INITIAL:
default:
return const Center(
child: Text('正在获取数据....'),
);
}
}
Widget _buildItem(int index) {
Widget _buildItem(MembershipDataGoodsList goods) {
return Flex(
direction: Axis.horizontal,
children: [
const Text(
"一个月",
style: TextStyle(
Text(
goods.name!,
style: const TextStyle(
color: Colors.white,
fontSize: 15.0,
),
),
Gaps.hGap10,
const Expanded(
Expanded(
flex: 1,
child: Align(
alignment: Alignment.centerRight,
child: Text(
"99¥",
style: TextStyle(
goods.price!,
style: const TextStyle(
color: Colors.white,
fontSize: 15.0,
),
......@@ -196,13 +237,58 @@ class _MembershipPageState extends State<MembershipPage>
style: TextStyle(color: Colors.white, fontSize: 15.0),
),
onPressed: () {
Toast.show("开通啦!");
DioUtils.instance.requestNetwork<OrderEntity>(
Method.post,
HttpApi.order,
params: {'goods_id': goods.id},
onSuccess: (data) {
String orderSn = data!.data!.orderSn!;
DioUtils.instance.requestNetwork<PayEntity>(
Method.get,
"${HttpApi.pay}?order_sn=$orderSn&pay_type=paypal",
params: [],
onSuccess: (data) {
String id = data!.data!.id!;
payPalRequest(id);
_isLoading = false;
},
onError: (code, msg) {
Toast.show(msg.toString());
_isLoading = false;
setState(() {});
},
);
_isLoading = false;
},
onError: (code, msg) {
Toast.show(msg.toString());
_isLoading = false;
setState(() {});
},
);
},
),
],
);
}
Future<void> payPalRequest(String key) async {
final request = BraintreePayPalRequest(
amount: '0.01',
currencyCode: 'CNY',
billingAgreementDescription: '贝宝支付很无敌',
);
BraintreePaymentMethodNonce? result = await Braintree.requestPaypalNonce(
key,
request,
);
if (result != null) {
print('Nonce: ${result.nonce}');
} else {
print('PayPal flow was canceled.');
}
}
@override
void didChangeAppLifecycleState(AppLifecycleState state) {}
......
import 'package:Parlando/apis/api_response.dart';
import 'package:Parlando/membership/models/membership_entity.dart';
import 'package:Parlando/net/dio_utils.dart';
import 'package:Parlando/net/http_api.dart';
import 'package:flutter/material.dart';
class MembershipViewProvider with ChangeNotifier {
ApiResponse _apiResponse = ApiResponse.initial('Empty data');
MembershipData? _membership;
ApiResponse get response {
return _apiResponse;
}
MembershipData? get media {
return _membership;
}
Future<void> fetchMembershipData(String value) async {
_apiResponse = ApiResponse.loading('请求数据中...');
DioUtils.instance.asyncRequestNetwork<MembershipEntity>(
Method.get,
HttpApi.membership,
onSuccess: (data) {
_apiResponse = ApiResponse.completed(data!.data);
notifyListeners();
},
onError: (code, msg) {
_apiResponse = ApiResponse.error(msg);
notifyListeners();
},
);
}
void setSelectedMembership(MembershipData? membership) {
_membership = membership;
// notifyListeners();
}
}
......@@ -9,11 +9,14 @@ class HttpApi {
static const String immersive = 'immersive';
static const String avatar = 'avatar';
static const String user = 'user';
static const String membership = 'membership';
static const String home = 'home';
static const String myVideos = '/my/videos';
static const String praise = '/praise';
static const String addView = '/addview';
static const String collect = '/collect';
static const String order = '/order';
static const String pay = '/pay';
static const String search = 'search/repositories';
static const String subscriptions = 'users/simplezhli/subscriptions';
static const String upload = 'uuc/upload-inco';
......
......@@ -5,371 +5,364 @@ packages:
dependency: transitive
description:
name: _fe_analyzer_shared
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "31.0.0"
version: "40.0.0"
analyzer:
dependency: transitive
description:
name: analyzer
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.0"
version: "4.1.0"
animated_radial_menu:
dependency: "direct main"
description:
name: animated_radial_menu
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.1"
archive:
dependency: transitive
description:
name: archive
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.11"
args:
dependency: transitive
description:
name: args
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.0"
version: "2.3.1"
async:
dependency: transitive
description:
name: async
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.2"
boolean_selector:
dependency: transitive
description:
name: boolean_selector
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
build:
dependency: transitive
description:
name: build
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.0"
build_config:
dependency: transitive
description:
name: build_config
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
build_daemon:
dependency: transitive
description:
name: build_daemon
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
build_resolvers:
dependency: transitive
description:
name: build_resolvers
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.6"
version: "2.0.9"
build_runner:
dependency: "direct dev"
description:
name: build_runner
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.10"
version: "2.1.11"
build_runner_core:
dependency: transitive
description:
name: build_runner_core
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "7.2.3"
built_collection:
dependency: transitive
description:
name: built_collection
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.1"
built_value:
dependency: transitive
description:
name: built_value
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "8.2.3"
version: "8.3.2"
cached_network_image:
dependency: "direct main"
description:
name: cached_network_image
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
version: "3.2.1"
cached_network_image_platform_interface:
dependency: transitive
description:
name: cached_network_image_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
cached_network_image_web:
dependency: transitive
description:
name: cached_network_image_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
camera:
dependency: "direct main"
description:
name: camera
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.4+21"
version: "0.9.7+1"
camera_platform_interface:
dependency: transitive
description:
name: camera_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.6"
version: "2.2.0"
camera_web:
dependency: transitive
description:
name: camera_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.1+3"
version: "0.2.1+6"
characters:
dependency: transitive
description:
name: characters
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
checked_yaml:
dependency: transitive
description:
name: checked_yaml
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.flutter-io.cn"
source: hosted
version: "0.3.5"
clock:
dependency: transitive
description:
name: clock
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
code_builder:
dependency: transitive
description:
name: code_builder
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.1.0"
collection:
dependency: transitive
description:
name: collection
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.16.0"
common_utils:
dependency: "direct main"
description:
name: common_utils
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
version: "3.0.2"
coverage:
dependency: transitive
description:
name: coverage
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
cross_file:
dependency: transitive
description:
name: cross_file
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.3"
version: "0.3.3+1"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.1"
csslib:
dependency: transitive
description:
name: csslib
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.17.1"
version: "0.17.2"
cupertino_icons:
dependency: "direct main"
description:
name: cupertino_icons
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
dart_style:
dependency: transitive
description:
name: dart_style
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
version: "2.2.3"
decimal:
dependency: "direct overridden"
description:
name: decimal
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.0"
device_info_plus:
dependency: "direct main"
description:
name: device_info_plus
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.3"
device_info_plus_linux:
dependency: transitive
description:
name: device_info_plus_linux
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
device_info_plus_macos:
dependency: transitive
description:
name: device_info_plus_macos
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.3"
device_info_plus_platform_interface:
dependency: transitive
description:
name: device_info_plus_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.0+1"
device_info_plus_web:
dependency: transitive
description:
name: device_info_plus_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
device_info_plus_windows:
dependency: transitive
description:
name: device_info_plus_windows
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
dio:
dependency: "direct main"
description:
name: dio
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.6"
email_validator:
dependency: "direct main"
description:
name: email_validator
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
event_bus:
dependency: "direct main"
description:
name: event_bus
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
fake_async:
dependency: transitive
description:
name: fake_async
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
ffi:
dependency: transitive
description:
name: ffi
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
version: "1.2.1"
fijkplayer:
dependency: "direct main"
description:
name: fijkplayer
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.10.1"
file:
dependency: transitive
description:
name: file
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.2"
fixnum:
dependency: transitive
description:
name: fixnum
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.0.1"
fluro:
dependency: "direct main"
description:
name: fluro
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
flustars:
dependency: "direct main"
description:
name: flustars
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
flutter:
......@@ -390,14 +383,21 @@ packages:
dependency: transitive
description:
name: flutter_blurhash
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.7.0"
flutter_braintree:
dependency: "direct main"
description:
name: flutter_braintree
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.8"
version: "2.3.1"
flutter_cache_manager:
dependency: transitive
description:
name: flutter_cache_manager
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
flutter_driver:
......@@ -409,14 +409,14 @@ packages:
dependency: "direct dev"
description:
name: flutter_launcher_icons
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.2"
flutter_lints:
dependency: "direct dev"
description:
name: flutter_lints
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
flutter_localizations:
......@@ -428,56 +428,56 @@ packages:
dependency: "direct dev"
description:
name: flutter_native_splash
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.6"
version: "2.2.2"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.6"
flutter_slidable:
dependency: "direct main"
description:
name: flutter_slidable
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
version: "1.3.0"
flutter_sound:
dependency: "direct main"
description:
name: flutter_sound
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.2.10"
version: "9.2.13"
flutter_sound_platform_interface:
dependency: transitive
description:
name: flutter_sound_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.2.10"
version: "9.2.13"
flutter_sound_web:
dependency: transitive
description:
name: flutter_sound_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.2.10"
version: "9.2.13"
flutter_spinkit:
dependency: "direct main"
description:
name: flutter_spinkit
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.0"
flutter_swiper_null_safety:
dependency: "direct main"
description:
name: flutter_swiper_null_safety
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
flutter_test:
......@@ -494,16 +494,16 @@ packages:
dependency: transitive
description:
name: font_awesome_flutter
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.2.0"
frontend_server_client:
dependency: transitive
description:
name: frontend_server_client
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
version: "2.1.3"
fuchsia_remote_debug_protocol:
dependency: transitive
description: flutter
......@@ -513,114 +513,114 @@ packages:
dependency: "direct main"
description:
name: getwidget
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.1.0"
glob:
dependency: transitive
description:
name: glob
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
graphs:
dependency: transitive
description:
name: graphs
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
html:
dependency: transitive
description:
name: html
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.15.0"
http:
dependency: transitive
description:
name: http
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.13.4"
http_multi_server:
dependency: transitive
description:
name: http_multi_server
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.2.0"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
version: "4.0.1"
image:
dependency: transitive
description:
name: image
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.3"
version: "3.2.0"
image_cropper:
dependency: "direct main"
description:
name: image_cropper
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
version: "2.0.3"
image_cropper_for_web:
dependency: transitive
description:
name: image_cropper_for_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.2"
version: "0.0.4"
image_cropper_platform_interface:
dependency: transitive
description:
name: image_cropper_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.5"
version: "0.8.5+3"
image_picker_android:
dependency: transitive
description:
name: image_picker_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.4+11"
version: "0.8.4+13"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.6"
version: "2.1.8"
image_picker_ios:
dependency: transitive
description:
name: image_picker_ios
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.5"
version: "0.8.5+5"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.4"
version: "2.5.0"
integration_test:
dependency: "direct dev"
description: flutter
......@@ -630,462 +630,462 @@ packages:
dependency: "direct main"
description:
name: intl
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.17.0"
io:
dependency: transitive
description:
name: io
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.3"
js:
dependency: transitive
description:
name: js
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.4"
json_annotation:
dependency: "direct main"
description:
name: json_annotation
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.5.0"
json_serializable:
dependency: "direct dev"
description:
name: json_serializable
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.2.0"
keyboard_actions:
dependency: "direct main"
description:
name: keyboard_actions
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
lint:
dependency: transitive
description:
name: lint
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.2"
lints:
dependency: transitive
description:
name: lints
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
logger:
dependency: transitive
description:
name: logger
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
logging:
dependency: transitive
description:
name: logging
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
matcher:
dependency: transitive
description:
name: matcher
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.11"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.4"
meta:
dependency: transitive
description:
name: meta
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.0"
mime:
dependency: transitive
description:
name: mime
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
nested:
dependency: transitive
description:
name: nested
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
node_preamble:
dependency: transitive
description:
name: node_preamble
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
octo_image:
dependency: transitive
description:
name: octo_image
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.0.2"
oktoast:
dependency: "direct main"
description:
name: oktoast
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.5"
version: "3.2.0"
package_config:
dependency: transitive
description:
name: package_config
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2"
path:
dependency: transitive
description:
name: path
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
path_provider:
dependency: "direct main"
description:
name: path_provider
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
version: "2.0.10"
path_provider_android:
dependency: transitive
description:
name: path_provider_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
version: "2.0.14"
path_provider_ios:
dependency: transitive
description:
name: path_provider_ios
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
version: "2.0.9"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.5"
version: "2.1.7"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.6"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.4"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
version: "2.0.7"
pausable_timer:
dependency: "direct main"
description:
name: pausable_timer
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0+4"
version: "1.0.0+5"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.11.1"
permission_handler:
dependency: "direct dev"
description:
name: permission_handler
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.2.0"
permission_handler_android:
dependency: transitive
description:
name: permission_handler_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.0.2+1"
permission_handler_apple:
dependency: transitive
description:
name: permission_handler_apple
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "9.0.4"
permission_handler_platform_interface:
dependency: transitive
description:
name: permission_handler_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.7.0"
permission_handler_windows:
dependency: transitive
description:
name: permission_handler_windows
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.4.0"
version: "5.0.0"
platform:
dependency: transitive
description:
name: platform
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
pool:
dependency: transitive
description:
name: pool
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.5.0"
process:
dependency: transitive
description:
name: process
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.2.4"
provider:
dependency: "direct main"
description:
name: provider
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.2"
version: "6.0.3"
pub_semver:
dependency: transitive
description:
name: pub_semver
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
pubspec_parse:
dependency: transitive
description:
name: pubspec_parse
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
quick_actions:
dependency: "direct main"
description:
name: quick_actions
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.0+10"
version: "0.6.0+11"
quick_actions_android:
dependency: transitive
description:
name: quick_actions_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.0+9"
version: "0.6.0+10"
quick_actions_ios:
dependency: transitive
description:
name: quick_actions_ios
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.0+9"
version: "0.6.0+10"
quick_actions_platform_interface:
dependency: transitive
description:
name: quick_actions_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
quiver:
dependency: transitive
description:
name: quiver
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
rational:
dependency: transitive
description:
name: rational
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.1"
recase:
dependency: transitive
description:
name: recase
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
rxdart:
dependency: "direct main"
description:
name: rxdart
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.27.3"
version: "0.27.4"
safemap:
dependency: "direct main"
description:
name: safemap
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
shared_preferences:
dependency: transitive
description:
name: shared_preferences
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
version: "2.0.15"
shared_preferences_android:
dependency: transitive
description:
name: shared_preferences_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.11"
version: "2.0.12"
shared_preferences_ios:
dependency: transitive
description:
name: shared_preferences_ios
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.4"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
version: "2.0.4"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
version: "2.1.1"
shelf:
dependency: transitive
description:
name: shelf
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
shelf_packages_handler:
dependency: transitive
description:
name: shelf_packages_handler
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
shelf_static:
dependency: transitive
description:
name: shelf_static
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
shelf_web_socket:
dependency: transitive
description:
name: shelf_web_socket
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
sign_in_with_apple:
dependency: "direct main"
description:
name: sign_in_with_apple
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
version: "4.0.0"
sign_in_with_apple_platform_interface:
dependency: transitive
description:
name: sign_in_with_apple_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
sign_in_with_apple_web:
dependency: transitive
description:
name: sign_in_with_apple_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
sky_engine:
......@@ -1097,387 +1097,387 @@ packages:
dependency: transitive
description:
name: source_gen
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.2"
source_helper:
dependency: transitive
description:
name: source_helper
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.2"
source_map_stack_trace:
dependency: transitive
description:
name: source_map_stack_trace
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
source_maps:
dependency: transitive
description:
name: source_maps
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.10.10"
source_span:
dependency: transitive
description:
name: source_span
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.2"
sp_util:
dependency: transitive
description:
name: sp_util
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.3"
sprintf:
dependency: "direct main"
description:
name: sprintf
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.0"
sqflite:
dependency: transitive
description:
name: sqflite
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.2+1"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1+1"
stack_trace:
dependency: transitive
description:
name: stack_trace
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.10.0"
sticky_headers:
dependency: "direct main"
description:
name: sticky_headers
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.0+2"
stream_channel:
dependency: transitive
description:
name: stream_channel
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
stream_transform:
dependency: transitive
description:
name: stream_transform
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
string_scanner:
dependency: transitive
description:
name: string_scanner
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
sync_http:
dependency: transitive
description:
name: sync_http
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.3.0"
synchronized:
dependency: transitive
description:
name: synchronized
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0+2"
tapped:
dependency: "direct main"
description:
name: tapped
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
term_glyph:
dependency: transitive
description:
name: term_glyph
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
test:
dependency: "direct dev"
description:
name: test
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.20.2"
version: "1.21.1"
test_api:
dependency: transitive
description:
name: test_api
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.9"
test_core:
dependency: transitive
description:
name: test_core
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.4.11"
version: "0.4.13"
timing:
dependency: transitive
description:
name: timing
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
typed_data:
dependency: transitive
description:
name: typed_data
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
universal_io:
dependency: transitive
description:
name: universal_io
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.4"
url_launcher:
dependency: "direct main"
description:
name: url_launcher
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.1.0"
version: "6.1.2"
url_launcher_android:
dependency: transitive
description:
name: url_launcher_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.16"
version: "6.0.17"
url_launcher_ios:
dependency: transitive
description:
name: url_launcher_ios
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "6.0.15"
version: "6.0.17"
url_launcher_linux:
dependency: transitive
description:
name: url_launcher_linux
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
url_launcher_macos:
dependency: transitive
description:
name: url_launcher_macos
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
url_launcher_platform_interface:
dependency: transitive
description:
name: url_launcher_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
url_launcher_web:
dependency: transitive
description:
name: url_launcher_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.9"
version: "2.0.11"
url_launcher_windows:
dependency: transitive
description:
name: url_launcher_windows
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
version: "3.0.1"
url_strategy:
dependency: "direct main"
description:
name: url_strategy
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0"
uuid:
dependency: transitive
description:
name: uuid
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.6"
vector_math:
dependency: transitive
description:
name: vector_math
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.2"
vibration:
dependency: "direct main"
description:
name: vibration
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.7.4-nullsafety.0"
vibration_web:
dependency: transitive
description:
name: vibration_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.3-nullsafety.0"
video_player:
dependency: "direct main"
description:
name: video_player
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.4.0"
version: "2.4.2"
video_player_android:
dependency: transitive
description:
name: video_player_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.2"
version: "2.3.4"
video_player_avfoundation:
dependency: transitive
description:
name: video_player_avfoundation
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.3.3"
version: "2.3.4"
video_player_platform_interface:
dependency: transitive
description:
name: video_player_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "5.1.2"
video_player_web:
dependency: transitive
description:
name: video_player_web
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.8"
version: "2.0.10"
vm_service:
dependency: transitive
description:
name: vm_service
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "8.2.2"
watcher:
dependency: transitive
description:
name: watcher
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
web_socket_channel:
dependency: transitive
description:
name: web_socket_channel
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0"
webdriver:
dependency: transitive
description:
name: webdriver
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.0"
webkit_inspection_protocol:
dependency: transitive
description:
name: webkit_inspection_protocol
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
version: "1.1.0"
webview_flutter:
dependency: "direct main"
description:
name: webview_flutter
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.2"
version: "3.0.4"
webview_flutter_android:
dependency: transitive
description:
name: webview_flutter_android
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.8.6"
version: "2.8.9"
webview_flutter_platform_interface:
dependency: transitive
description:
name: webview_flutter_platform_interface
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "1.8.1"
version: "1.9.0"
webview_flutter_wkwebview:
dependency: transitive
description:
name: webview_flutter_wkwebview
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.7.3"
version: "2.8.0"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "2.5.2"
version: "2.6.1"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.0+1"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "5.3.1"
version: "6.1.0"
yaml:
dependency: transitive
description:
name: yaml
url: "https://pub.flutter-io.cn"
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
version: "3.1.1"
sdks:
dart: ">=2.17.0 <3.0.0"
flutter: ">=3.0.0"
......
......@@ -108,11 +108,13 @@ dependencies:
email_validator: ^2.0.1
getwidget: ^2.0.5
sign_in_with_apple: ^3.3.0
sign_in_with_apple: ^4.0.0
event_bus: ^2.0.0
animated_radial_menu: ^0.0.1
flutter_braintree: ^2.3.1
dependency_overrides:
decimal: 1.5.0
......