diff --git a/build.yaml b/build.yaml new file mode 100644 index 00000000..e3aacadb --- /dev/null +++ b/build.yaml @@ -0,0 +1,7 @@ +targets: + $default: + builders: + json_serializable: + options: + create_to_json: false + include_if_null: true \ No newline at end of file diff --git a/lib/constants/api.dart b/lib/constants/api.dart index 8c63611c..ed47ffcb 100644 --- a/lib/constants/api.dart +++ b/lib/constants/api.dart @@ -88,6 +88,8 @@ class _User { } class _Manager { + _Facility facility = _Facility(); + ///获取业委会列表 String get commiteeStaff => '/ownersCommittee/findAll'; @@ -288,3 +290,7 @@ class _Message { ///消息中心:评论通知全部已读(进入评论通知列表后调用) String get allReadComment => '/user/message/allReadComment'; } + +class _Facility { + String get type => '/user/facilitiesAppointment/findCategoryList'; +} diff --git a/lib/constants/application_objects.dart b/lib/constants/application_objects.dart index 621f6ce9..6a9033c6 100644 --- a/lib/constants/application_objects.dart +++ b/lib/constants/application_objects.dart @@ -1,4 +1,5 @@ // import 'package:aku_community/widget/bee_scaffold.dart'; +import 'package:aku_community/ui/community/facility/facility_appointment_page.dart'; import 'package:flutter/material.dart'; import 'package:aku_community/const/resource.dart'; @@ -14,7 +15,6 @@ import 'package:aku_community/pages/setting_page/settings_page.dart'; import 'package:aku_community/pages/things_page/fixed_submit_page.dart'; import 'package:aku_community/pages/visitor_access_page/visitor_access_page.dart'; import 'package:aku_community/ui/community/activity/activity_list_page.dart'; -import 'package:aku_community/ui/community/facility/pick_facility_page.dart'; import 'package:aku_community/ui/home/application/all_application.dart'; import 'package:aku_community/ui/manager/advice/advice_page.dart'; import 'package:aku_community/ui/manager/questionnaire/questionnaire_page.dart'; @@ -74,7 +74,7 @@ List appObjects = [ // AO('装修管理', R.ASSETS_APPLICATIONS_DECORATION_PNG, FitupManagePage()), AO('借还管理', R.ASSETS_APPLICATIONS_BORROW_PNG, () => SelectBorrowReturnPage()), AO('一键报警', R.ASSETS_APPLICATIONS_POLICE_PNG, () => AlarmPage()), - AO('设施预约', R.ASSETS_ICONS_TOOL_FACILITY_PNG, () => PickFacilityPage()), + AO('设施预约', R.ASSETS_ICONS_TOOL_FACILITY_PNG, () => FacilityAppointmentPage()), // AO( // '小区教育', // R.ASSETS_IMAGES_PLACEHOLDER_WEBP, diff --git a/lib/generated_plugin_registrant.dart b/lib/generated_plugin_registrant.dart index b6ead0a8..222a4e7a 100644 --- a/lib/generated_plugin_registrant.dart +++ b/lib/generated_plugin_registrant.dart @@ -4,8 +4,10 @@ // ignore_for_file: lines_longer_than_80_chars +import 'package:device_info_plus_web/device_info_plus_web.dart'; import 'package:firebase_core_web/firebase_core_web.dart'; import 'package:image_picker_for_web/image_picker_for_web.dart'; +import 'package:package_info_plus_web/package_info_plus_web.dart'; import 'package:shared_preferences_web/shared_preferences_web.dart'; import 'package:url_launcher_web/url_launcher_web.dart'; @@ -13,8 +15,10 @@ import 'package:flutter_web_plugins/flutter_web_plugins.dart'; // ignore: public_member_api_docs void registerPlugins(Registrar registrar) { + DeviceInfoPlusPlugin.registerWith(registrar); FirebaseCoreWeb.registerWith(registrar); ImagePickerPlugin.registerWith(registrar); + PackageInfoPlugin.registerWith(registrar); SharedPreferencesPlugin.registerWith(registrar); UrlLauncherPlugin.registerWith(registrar); registrar.registerMessageHandler(); diff --git a/lib/model/README.md b/lib/model/README.md new file mode 100644 index 00000000..e7d7fe41 --- /dev/null +++ b/lib/model/README.md @@ -0,0 +1,3 @@ +# need migrate all models to generated models + +[test](../models/README.md) diff --git a/lib/models/facility/facility_appointment_model.dart b/lib/models/facility/facility_appointment_model.dart new file mode 100644 index 00000000..6af0eb58 --- /dev/null +++ b/lib/models/facility/facility_appointment_model.dart @@ -0,0 +1,30 @@ +import 'package:json_annotation/json_annotation.dart'; +part 'facility_appointment_model.g.dart'; + +@JsonSerializable() +class FacilityAppointmentModel { + final int id; + final String code; + final String facilitiesName; + final int status; + final String address; + final String appointmentStartDate; + final String appointmentEndDate; + final String? nullifyReason; + final String? useEndDate; + + FacilityAppointmentModel({ + required this.id, + required this.code, + required this.facilitiesName, + required this.status, + required this.address, + required this.appointmentStartDate, + required this.appointmentEndDate, + required this.nullifyReason, + required this.useEndDate, + }); + + factory FacilityAppointmentModel.fromJson(Map json) => + _$FacilityAppointmentModelFromJson(json); +} diff --git a/lib/models/facility/facility_appointment_model.g.dart b/lib/models/facility/facility_appointment_model.g.dart new file mode 100644 index 00000000..84df769d --- /dev/null +++ b/lib/models/facility/facility_appointment_model.g.dart @@ -0,0 +1,22 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'facility_appointment_model.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FacilityAppointmentModel _$FacilityAppointmentModelFromJson( + Map json) { + return FacilityAppointmentModel( + id: json['id'] as int, + code: json['code'] as String, + facilitiesName: json['facilitiesName'] as String, + status: json['status'] as int, + address: json['address'] as String, + appointmentStartDate: json['appointmentStartDate'] as String, + appointmentEndDate: json['appointmentEndDate'] as String, + nullifyReason: json['nullifyReason'] as String?, + useEndDate: json['useEndDate'] as String?, + ); +} diff --git a/lib/models/facility/facility_type_model.dart b/lib/models/facility/facility_type_model.dart new file mode 100644 index 00000000..3001304b --- /dev/null +++ b/lib/models/facility/facility_type_model.dart @@ -0,0 +1,31 @@ +import 'package:json_annotation/json_annotation.dart'; + +import 'package:aku_community/model/common/img_model.dart'; + +part 'facility_type_model.g.dart'; + +@JsonSerializable() +class FacilityTypeModel { + final int id; + final String name; + final String openStartDate; + final String openEndDate; + + String get startDateStr => openStartDate.split(':').getRange(0, 2).join(':'); + String get endDateStr => openEndDate.split(':').getRange(0, 2).join(':'); + + @JsonKey(name: 'num') + final int num_; + final List? imgUrls; + FacilityTypeModel({ + required this.id, + required this.name, + required this.openStartDate, + required this.openEndDate, + required this.num_, + required this.imgUrls, + }); + + factory FacilityTypeModel.fromJson(Map json) => + _$FacilityTypeModelFromJson(json); +} diff --git a/lib/models/facility/facility_type_model.g.dart b/lib/models/facility/facility_type_model.g.dart new file mode 100644 index 00000000..c9cba9f9 --- /dev/null +++ b/lib/models/facility/facility_type_model.g.dart @@ -0,0 +1,20 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'facility_type_model.dart'; + +// ************************************************************************** +// JsonSerializableGenerator +// ************************************************************************** + +FacilityTypeModel _$FacilityTypeModelFromJson(Map json) { + return FacilityTypeModel( + id: json['id'] as int, + name: json['name'] as String, + openStartDate: json['openStartDate'] as String, + openEndDate: json['openEndDate'] as String, + num_: json['num'] as int, + imgUrls: (json['imgUrls'] as List?) + ?.map((e) => ImgModel.fromJson(e as Map)) + .toList(), + ); +} diff --git a/lib/ui/community/facility/facility_appointment_page.dart b/lib/ui/community/facility/facility_appointment_page.dart new file mode 100644 index 00000000..624d8c12 --- /dev/null +++ b/lib/ui/community/facility/facility_appointment_page.dart @@ -0,0 +1,39 @@ +import 'package:aku_community/widget/bee_scaffold.dart'; +import 'package:aku_community/widget/tab_bar/bee_tab_bar.dart'; +import 'package:flutter/material.dart'; + +class FacilityAppointmentPage extends StatefulWidget { + FacilityAppointmentPage({Key? key}) : super(key: key); + + @override + _FacilityAppointmentPageState createState() => + _FacilityAppointmentPageState(); +} + +class _FacilityAppointmentPageState extends State + with TickerProviderStateMixin { + late TabController _tabController; + @override + void initState() { + super.initState(); + _tabController = TabController(length: 2, vsync: this); + } + + @override + void dispose() { + _tabController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return BeeScaffold( + title: '设施预约', + appBarBottom: BeeTabBar( + controller: _tabController, + tabs: ['我的预约', '历史预约'], + ), + body: SizedBox(), + ); + } +} diff --git a/lib/ui/community/facility/facility_appointment_view.dart b/lib/ui/community/facility/facility_appointment_view.dart new file mode 100644 index 00000000..cb3cd0b1 --- /dev/null +++ b/lib/ui/community/facility/facility_appointment_view.dart @@ -0,0 +1,16 @@ +import 'package:flutter/material.dart'; + +class FacilityAppointmentView extends StatefulWidget { + FacilityAppointmentView({Key? key}) : super(key: key); + + @override + _FacilityAppointmentViewState createState() => + _FacilityAppointmentViewState(); +} + +class _FacilityAppointmentViewState extends State { + @override + Widget build(BuildContext context) { + return SizedBox(); + } +} diff --git a/lib/ui/community/facility/facility_type_card.dart b/lib/ui/community/facility/facility_type_card.dart new file mode 100644 index 00000000..91625b7c --- /dev/null +++ b/lib/ui/community/facility/facility_type_card.dart @@ -0,0 +1,91 @@ +import 'package:aku_community/base/base_style.dart'; +import 'package:aku_community/constants/api.dart'; +import 'package:aku_community/model/common/img_model.dart'; +import 'package:flutter/material.dart'; +import 'package:aku_community/models/facility/facility_type_model.dart'; +import 'package:aku_community/utils/headers.dart'; + +class FacilityTypeCard extends StatelessWidget { + final FacilityTypeModel model; + const FacilityTypeCard({Key? key, required this.model}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialButton( + padding: EdgeInsets.zero, + clipBehavior: Clip.antiAlias, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(8.w), + ), + child: Column( + children: [ + FadeInImage.assetNetwork( + placeholder: R.ASSETS_IMAGES_PLACEHOLDER_WEBP, + image: API.image(ImgModel.first(model.imgUrls)), + height: 320.w, + width: double.infinity, + fit: BoxFit.cover, + ), + 24.hb, + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + 32.wb, + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + model.name, + style: TextStyle( + fontSize: 32.sp, + fontWeight: FontWeight.bold, + ), + ), + 32.hb, + Row( + children: [ + Text( + '开放时段', + style: TextStyle( + color: ktextSubColor, + fontSize: 22.sp, + ), + ), + Text( + '${model.startDateStr}-${model.endDateStr}', + style: TextStyle( + fontSize: 22.sp, + ), + ), + ], + ), + ], + ), + ), + MaterialButton( + height: 52.w, + minWidth: 168.w, + padding: EdgeInsets.zero, + elevation: 0, + shape: StadiumBorder(), + color: kPrimaryColor, + onPressed: () {}, + child: Text( + '填写预约', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 26.sp, + ), + ), + ), + 32.wb, + ], + ), + 24.hb, + ], + ), + onPressed: () {}, + ); + } +} diff --git a/lib/ui/community/facility/pick_facility_page.dart b/lib/ui/community/facility/pick_facility_page.dart index 74f9fafc..cb0ab063 100644 --- a/lib/ui/community/facility/pick_facility_page.dart +++ b/lib/ui/community/facility/pick_facility_page.dart @@ -1,6 +1,12 @@ +import 'package:aku_community/constants/api.dart'; +import 'package:aku_community/pages/things_page/widget/bee_list_view.dart'; +import 'package:aku_community/ui/community/facility/facility_type_card.dart'; import 'package:flutter/material.dart'; import 'package:aku_community/widget/bee_scaffold.dart'; +import 'package:aku_community/models/facility/facility_type_model.dart'; +import 'package:flutter_easyrefresh/easy_refresh.dart'; +import 'package:aku_community/utils/headers.dart'; class PickFacilityPage extends StatefulWidget { PickFacilityPage({Key? key}) : super(key: key); @@ -10,10 +16,33 @@ class PickFacilityPage extends StatefulWidget { } class _PickFacilityPageState extends State { + final EasyRefreshController _refreshController = EasyRefreshController(); + @override + void dispose() { + _refreshController.dispose(); + super.dispose(); + } + @override Widget build(BuildContext context) { return BeeScaffold( title: '选择设施', + body: BeeListView( + path: API.manager.facility.type, + controller: _refreshController, + convert: (model) => + model.tableList!.map((e) => FacilityTypeModel.fromJson(e)).toList(), + builder: (items) { + return ListView.separated( + padding: EdgeInsets.all(32.w), + itemBuilder: (context, index) { + return FacilityTypeCard(model: items[index]); + }, + separatorBuilder: (context, index) => 32.hb, + itemCount: items.length, + ); + }, + ), ); } } diff --git a/lib/ui/community/notice/notice_card.dart b/lib/ui/community/notice/notice_card.dart index fa316748..a0810142 100644 --- a/lib/ui/community/notice/notice_card.dart +++ b/lib/ui/community/notice/notice_card.dart @@ -87,7 +87,8 @@ class NoticeCard extends StatelessWidget { onTap: () { BeeImagePreview.toPath( path: ImgModel.first(model.imgUrls), - tag: ImgModel.first(model.imgUrls), + tag: + '${ImgModel.first(model.imgUrls)}${model.hashCode}', ); }, child: Container( @@ -97,7 +98,8 @@ class NoticeCard extends StatelessWidget { borderRadius: BorderRadius.circular(8.w), ), child: Hero( - tag: ImgModel.first(model.imgUrls), + tag: + '${ImgModel.first(model.imgUrls)}${model.hashCode}', child: FadeInImage.assetNetwork( placeholder: R.ASSETS_IMAGES_PLACEHOLDER_WEBP, image: API.image(ImgModel.first(model.imgUrls)), diff --git a/lib/ui/community/notice/notice_detail_page.dart b/lib/ui/community/notice/notice_detail_page.dart index f7a38175..b8edea71 100644 --- a/lib/ui/community/notice/notice_detail_page.dart +++ b/lib/ui/community/notice/notice_detail_page.dart @@ -75,7 +75,9 @@ class _NoticeDetailPageState extends State { API.community.boardDetail, params: {'announcementId': widget.id}, ); - model = BoardDetailModel.fromJson(baseModel.data); + if (baseModel.data != null) { + model = BoardDetailModel.fromJson(baseModel.data); + } setState(() {}); }, firstRefresh: true, @@ -91,10 +93,13 @@ class _NoticeDetailPageState extends State { .map( (e) => GestureDetector( onTap: () { - BeeImagePreview.toPath(path: e.url, tag: e.url); + BeeImagePreview.toPath( + path: e.url, + tag: '${e.url!}${e.hashCode}', + ); }, child: Hero( - tag: e.url!, + tag: '${e.url!}${e.hashCode}', child: Container( clipBehavior: Clip.antiAlias, decoration: BoxDecoration( diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 8fce4cfe..0634634c 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -5,17 +5,21 @@ import FlutterMacOS import Foundation +import device_info_plus_macos import firebase_core import firebase_crashlytics import package_info +import package_info_plus_macos import path_provider_macos import shared_preferences_macos import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin")) FLTPackageInfoPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlugin")) + FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 65cb9ad9..adbff0d0 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,13 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.flutter-io.cn" + source: hosted + version: "21.0.0" amap_flutter_base: dependency: "direct main" description: @@ -22,6 +29,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.5.0" animated_text_kit: dependency: "direct main" description: @@ -92,6 +106,62 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "4.0.1" + build: + dependency: transitive + description: + name: build + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.2" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.flutter-io.cn" + source: hosted + version: "7.0.0" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.flutter-io.cn" + source: hosted + version: "5.0.0" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.flutter-io.cn" + source: hosted + version: "8.0.5" characters: dependency: transitive description: @@ -106,6 +176,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" cli_util: dependency: transitive description: @@ -120,6 +197,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.0" collection: dependency: "direct main" description: @@ -154,28 +238,63 @@ packages: name: cupertino_icons url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.2" + version: "1.0.3" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" decimal: dependency: transitive description: name: decimal url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.0+1" - device_info: + version: "1.1.0" + device_info_plus: dependency: transitive description: - name: device_info + name: device_info_plus url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.0" - device_info_platform_interface: + version: "1.0.1" + device_info_plus_linux: dependency: transitive description: - name: device_info_platform_interface + name: device_info_plus_linux url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.1" + version: "1.0.1" + device_info_plus_macos: + dependency: transitive + description: + name: device_info_plus_macos + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.2" + device_info_plus_web: + dependency: transitive + description: + name: device_info_plus_web + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + device_info_plus_windows: + dependency: transitive + description: + name: device_info_plus_windows + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" dio: dependency: "direct main" description: @@ -239,6 +358,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.0.2" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" flustars: dependency: "direct main" description: @@ -331,6 +457,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.4.2" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" get: dependency: "direct main" description: @@ -345,6 +478,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" grinder: dependency: "direct dev" description: @@ -379,7 +519,14 @@ packages: name: http url: "https://pub.flutter-io.cn" source: hosted - version: "0.13.1" + version: "0.13.3" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.flutter-io.cn" + source: hosted + version: "3.0.1" http_parser: dependency: transitive description: @@ -429,6 +576,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" jpush_flutter: dependency: "direct main" description: @@ -445,6 +599,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.6.3" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.0.1" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.1.1" logger: dependency: "direct main" description: @@ -452,6 +620,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" matcher: dependency: transitive description: @@ -487,6 +662,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" package_info: dependency: "direct main" description: @@ -494,6 +676,48 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" + package_info_plus: + dependency: transitive + description: + name: package_info_plus + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + package_info_plus_linux: + dependency: transitive + description: + name: package_info_plus_linux + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + package_info_plus_macos: + dependency: transitive + description: + name: package_info_plus_macos + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + package_info_plus_web: + dependency: transitive + description: + name: package_info_plus_web + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" + package_info_plus_windows: + dependency: transitive + description: + name: package_info_plus_windows + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" path: dependency: transitive description: @@ -549,7 +773,7 @@ packages: name: permission_handler url: "https://pub.flutter-io.cn" source: hosted - version: "7.0.0" + version: "7.1.0" permission_handler_platform_interface: dependency: transitive description: @@ -578,13 +802,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.5.0" power_logger: dependency: "direct main" description: name: power_logger url: "https://pub.flutter-io.cn" source: hosted - version: "1.2.0" + version: "1.2.1" process: dependency: transitive description: @@ -599,6 +830,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "5.0.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" qr: dependency: transitive description: @@ -628,7 +873,7 @@ packages: name: rational url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.0" + version: "1.1.0+1" share: dependency: "direct main" description: @@ -678,6 +923,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.1.1" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.1" shimmer: dependency: "direct main" description: @@ -690,6 +949,13 @@ packages: description: flutter source: sdk version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" source_span: dependency: transitive description: @@ -760,6 +1026,13 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "0.2.19" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" tint: dependency: transitive description: @@ -844,6 +1117,20 @@ packages: url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.1.0" win32: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 34ceebac..c33f45f9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,11 +13,11 @@ dependencies: flutter_localizations: sdk: flutter intl: ^0.17.0 - permission_handler: ^7.0.0 + permission_handler: ^7.1.0 package_info: ^2.0.0 provider: ^5.0.0 flutter_screenutil: ^5.0.0 - cupertino_icons: ^1.0.2 + cupertino_icons: ^1.0.3 url_launcher: ^6.0.2 flustars: ^2.0.1 flutter_icons: @@ -50,7 +50,7 @@ dependencies: ref: null-safety image_picker: ^0.7.4 - power_logger: ^1.2.0 + power_logger: ^1.2.1 flutter_rating_bar: ^4.0.0 jpush_flutter: git: @@ -65,6 +65,7 @@ dependencies: firebase_crashlytics: ^2.0.0 share: ^2.0.1 collection: ^1.15.0 + json_annotation: ^4.0.1 dev_dependencies: flutter_test: @@ -72,6 +73,8 @@ dev_dependencies: import_sorter: ^4.4.2 grinder: ^0.9.0 flutter_native_splash: ^1.1.8+4 + json_serializable: ^4.1.1 + build_runner: ^2.0.2 flutter: uses-material-design: true