| eb141365fb69a4e0decadd2584d53516 |
| /* Begin XCBuildConfiguration section */ | /* Begin XCBuildConfiguration section */ | ||||
| 249021D3217E4FDB00AE95B9 /* Profile */ = { | 249021D3217E4FDB00AE95B9 /* Profile */ = { | ||||
| isa = XCBuildConfiguration; | isa = XCBuildConfiguration; | ||||
| baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | |||||
| buildSettings = { | buildSettings = { | ||||
| ALWAYS_SEARCH_USER_PATHS = NO; | ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| CLANG_ANALYZER_NONNULL = YES; | CLANG_ANALYZER_NONNULL = YES; | ||||
| }; | }; | ||||
| 97C147031CF9000F007C117D /* Debug */ = { | 97C147031CF9000F007C117D /* Debug */ = { | ||||
| isa = XCBuildConfiguration; | isa = XCBuildConfiguration; | ||||
| baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; | |||||
| buildSettings = { | buildSettings = { | ||||
| ALWAYS_SEARCH_USER_PATHS = NO; | ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| CLANG_ANALYZER_NONNULL = YES; | CLANG_ANALYZER_NONNULL = YES; | ||||
| }; | }; | ||||
| 97C147041CF9000F007C117D /* Release */ = { | 97C147041CF9000F007C117D /* Release */ = { | ||||
| isa = XCBuildConfiguration; | isa = XCBuildConfiguration; | ||||
| baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; | |||||
| buildSettings = { | buildSettings = { | ||||
| ALWAYS_SEARCH_USER_PATHS = NO; | ALWAYS_SEARCH_USER_PATHS = NO; | ||||
| CLANG_ANALYZER_NONNULL = YES; | CLANG_ANALYZER_NONNULL = YES; |
| "/api/tb-crops-detail/{cropId}?page={page}&size={size}&sort=executeDate,DESC") | "/api/tb-crops-detail/{cropId}?page={page}&size={size}&sort=executeDate,DESC") | ||||
| Future<CropPlot> getCropDetail(@Path() int cropId, | Future<CropPlot> getCropDetail(@Path() int cropId, | ||||
| {@Path() int page = 0, @Path() int size = 20}); | {@Path() int page = 0, @Path() int size = 20}); | ||||
| @PUT("/api/tb-crops") | |||||
| Future<void> updateCrop(@Body() TbCropDTO crop); | |||||
| } | } |
| // GENERATED CODE - DO NOT MODIFY BY HAND | |||||
| part of 'rest_client.dart'; | |||||
| // ************************************************************************** | |||||
| // RetrofitGenerator | |||||
| // ************************************************************************** | |||||
| class _RestClient implements RestClient { | |||||
| _RestClient(this._dio, {this.baseUrl}) { | |||||
| ArgumentError.checkNotNull(_dio, '_dio'); | |||||
| this.baseUrl ??= 'http://tpf.aztrace.vn'; | |||||
| } | |||||
| final Dio _dio; | |||||
| String baseUrl; | |||||
| @override | |||||
| login(userRequest) async { | |||||
| ArgumentError.checkNotNull(userRequest, 'userRequest'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| _data.addAll(userRequest?.toJson() ?? <String, dynamic>{}); | |||||
| final Response<Map<String, dynamic>> _result = await _dio.request( | |||||
| '/api/authenticate', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'POST', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| final value = User.fromJson(_result.data); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| getMe() async { | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| final Response<Map<String, dynamic>> _result = await _dio.request( | |||||
| '/api/account', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'GET', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| final value = Account.fromJson(_result.data); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| forgotPassword(email) async { | |||||
| ArgumentError.checkNotNull(email, 'email'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = email; | |||||
| await _dio.request<void>('/api/account/reset-password/init', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'POST', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| return null; | |||||
| } | |||||
| @override | |||||
| resetPassword(password) async { | |||||
| ArgumentError.checkNotNull(password, 'password'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| _data.addAll(password?.toJson() ?? <String, dynamic>{}); | |||||
| await _dio.request<void>('/api/account/reset-password/finish', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'POST', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| return null; | |||||
| } | |||||
| @override | |||||
| changePassword(password) async { | |||||
| ArgumentError.checkNotNull(password, 'password'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| _data.addAll(password?.toJson() ?? <String, dynamic>{}); | |||||
| await _dio.request<void>('/api/account/change-password', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'POST', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| return null; | |||||
| } | |||||
| @override | |||||
| updateProfile(account) async { | |||||
| ArgumentError.checkNotNull(account, 'account'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| _data.addAll(account?.toJson() ?? <String, dynamic>{}); | |||||
| final Response<Map<String, dynamic>> _result = await _dio.request( | |||||
| '/api/update-my-profile', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'PUT', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| final value = Account.fromJson(_result.data); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| getSupplies(type) async { | |||||
| ArgumentError.checkNotNull(type, 'type'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| final Response<List<dynamic>> _result = await _dio.request( | |||||
| '/api/tb-supplies-by-type/$type', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'GET', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| var value = _result.data | |||||
| .map((dynamic i) => Supply.fromJson(i as Map<String, dynamic>)) | |||||
| .toList(); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| updateFcmToken(token) async { | |||||
| ArgumentError.checkNotNull(token, 'token'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = token; | |||||
| await _dio.request<void>('/api/update-fcmToken', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'PUT', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| return null; | |||||
| } | |||||
| @override | |||||
| getPlots({page = 0, size = 20, query = ""}) async { | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| queryParameters.removeWhere((k, v) => v == null); | |||||
| final _data = <String, dynamic>{}; | |||||
| final Response<List<dynamic>> _result = await _dio.request( | |||||
| '/api/tb-crops?page=$page&size=$size&query=$query', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'GET', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| var value = _result.data | |||||
| .map((dynamic i) => Crop.fromJson(i as Map<String, dynamic>)) | |||||
| .toList(); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| getActionTypes() async { | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| final Response<List<dynamic>> _result = await _dio.request( | |||||
| '/api/listActivityTypesOther', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'GET', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| var value = _result.data | |||||
| .map((dynamic i) => ActionType.fromJson(i as Map<String, dynamic>)) | |||||
| .toList(); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| getCropDetail(cropId, {page = 0, size = 20}) async { | |||||
| ArgumentError.checkNotNull(cropId, 'cropId'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| queryParameters.removeWhere((k, v) => v == null); | |||||
| final _data = <String, dynamic>{}; | |||||
| final Response<Map<String, dynamic>> _result = await _dio.request( | |||||
| '/api/tb-crops-detail/$cropId?page=$page&size=$size&sort=executeDate,DESC', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'GET', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| final value = CropPlot.fromJson(_result.data); | |||||
| return value; | |||||
| } | |||||
| @override | |||||
| updateCrop(crop) async { | |||||
| ArgumentError.checkNotNull(crop, 'crop'); | |||||
| const _extra = <String, dynamic>{}; | |||||
| final queryParameters = <String, dynamic>{}; | |||||
| final _data = <String, dynamic>{}; | |||||
| _data.addAll(crop?.toJson() ?? <String, dynamic>{}); | |||||
| await _dio.request<void>('/api/tb-crops', | |||||
| queryParameters: queryParameters, | |||||
| options: RequestOptions( | |||||
| method: 'PUT', | |||||
| headers: <String, dynamic>{}, | |||||
| extra: _extra, | |||||
| baseUrl: baseUrl), | |||||
| data: _data); | |||||
| return null; | |||||
| } | |||||
| } |
| return client.getPlots(page: page, size: size, query: searchString); | return client.getPlots(page: page, size: size, query: searchString); | ||||
| } | } | ||||
| Future<void> updatePlot(TbCropDTO tbCropDTO) { | |||||
| final client = RestClient(dio); | |||||
| return client.updateCrop(tbCropDTO); | |||||
| } | |||||
| Future<User> signInWithCredentials(String username, String password) { | Future<User> signInWithCredentials(String username, String password) { | ||||
| final client = RestClient(dio); | final client = RestClient(dio); | ||||
| return client.login(UserRequest(username: username, password: password)); | return client.login(UserRequest(username: username, password: password)); |
| <String, dynamic>{ | <String, dynamic>{ | ||||
| 'id': instance.id, | 'id': instance.id, | ||||
| 'name': instance.name, | 'name': instance.name, | ||||
| 'description': instance.description | |||||
| 'description': instance.description, | |||||
| }; | }; |
| 'netHouseId': instance.netHouseId, | 'netHouseId': instance.netHouseId, | ||||
| 'netHouseName': instance.netHouseName, | 'netHouseName': instance.netHouseName, | ||||
| 'areaId': instance.areaId, | 'areaId': instance.areaId, | ||||
| 'area': instance.area | |||||
| 'area': instance.area, | |||||
| }; | }; |
| 'executeDate': instance.executeDate, | 'executeDate': instance.executeDate, | ||||
| 'description': instance.description, | 'description': instance.description, | ||||
| 'activityTypeName': instance.activityTypeName, | 'activityTypeName': instance.activityTypeName, | ||||
| 'workerName': instance.workerName | |||||
| 'workerName': instance.workerName, | |||||
| }; | }; |
| class WidgetToast extends StatelessWidget { | class WidgetToast extends StatelessWidget { | ||||
| String message; | String message; | ||||
| Color color = Colors.greenAccent; | |||||
| Color color = Colors.green; | |||||
| WidgetToast({@required this.message, this.color}); | WidgetToast({@required this.message, this.color}); | ||||
| @override | @override | ||||
| padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0), | padding: const EdgeInsets.symmetric(horizontal: 24.0, vertical: 12.0), | ||||
| decoration: BoxDecoration( | decoration: BoxDecoration( | ||||
| borderRadius: BorderRadius.circular(25.0), | borderRadius: BorderRadius.circular(25.0), | ||||
| color: color, | |||||
| color: Colors.green, | |||||
| ), | ), | ||||
| child: Row( | child: Row( | ||||
| mainAxisSize: MainAxisSize.min, | mainAxisSize: MainAxisSize.min, |
| import 'package:farm_tpf/custom_model/CropPlot.dart'; | import 'package:farm_tpf/custom_model/CropPlot.dart'; | ||||
| import 'package:farm_tpf/data/api/app_exception.dart'; | |||||
| import 'package:farm_tpf/data/repository/repository.dart'; | |||||
| import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart'; | import 'package:farm_tpf/presentation/custom_widgets/loading_list_page.dart'; | ||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_loading.dart'; | |||||
| import 'package:farm_tpf/presentation/custom_widgets/widget_toast.dart'; | |||||
| import 'package:farm_tpf/presentation/screens/plot_detail/bloc_plot_information.dart'; | import 'package:farm_tpf/presentation/screens/plot_detail/bloc_plot_information.dart'; | ||||
| import 'package:farm_tpf/utils/const_color.dart'; | import 'package:farm_tpf/utils/const_color.dart'; | ||||
| import 'package:farm_tpf/utils/const_string.dart'; | import 'package:farm_tpf/utils/const_string.dart'; | ||||
| import 'package:flutter/material.dart'; | import 'package:flutter/material.dart'; | ||||
| import 'package:fluttertoast/fluttertoast.dart'; | |||||
| import 'package:get/get.dart'; | import 'package:get/get.dart'; | ||||
| import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | import 'package:keyboard_dismisser/keyboard_dismisser.dart'; | ||||
| import 'package:farm_tpf/utils/formatter.dart'; | import 'package:farm_tpf/utils/formatter.dart'; | ||||
| TextEditingController _areaController = TextEditingController(); | TextEditingController _areaController = TextEditingController(); | ||||
| TextEditingController _descriptionController = TextEditingController(); | TextEditingController _descriptionController = TextEditingController(); | ||||
| FlutterToast flutterToast; | |||||
| bool _autoValidate = false; | bool _autoValidate = false; | ||||
| TbCropDTO _crop = TbCropDTO(); | TbCropDTO _crop = TbCropDTO(); | ||||
| final controller = Get.put(DescriptionChangeControler()); | final controller = Get.put(DescriptionChangeControler()); | ||||
| Repository _repository = Repository(); | |||||
| @override | @override | ||||
| void initState() { | void initState() { | ||||
| super.initState(); | super.initState(); | ||||
| flutterToast = FlutterToast(context); | |||||
| getPlotInfoBloc.getPlotInfo(widget.cropId, (data) { | getPlotInfoBloc.getPlotInfo(widget.cropId, (data) { | ||||
| var result = data as CropPlot; | var result = data as CropPlot; | ||||
| _crop = result.tbCropDTO; | _crop = result.tbCropDTO; | ||||
| _codeController.text = _crop.code.toString(); | _codeController.text = _crop.code.toString(); | ||||
| _supplyNameController.text = _crop.suppliesName.toString(); | _supplyNameController.text = _crop.suppliesName.toString(); | ||||
| _areaController.text = _crop.areaM2.formatNumtoStringDecimal(); | _areaController.text = _crop.areaM2.formatNumtoStringDecimal(); | ||||
| _crop.description = ""; | |||||
| _descriptionController.text = | |||||
| _crop.description == null ? "" : _crop.description.toString(); | |||||
| }, (err) {}); | }, (err) {}); | ||||
| } | } | ||||
| _validateInputs() async { | _validateInputs() async { | ||||
| if (_formKey.currentState.validate()) { | if (_formKey.currentState.validate()) { | ||||
| _formKey.currentState.save(); | _formKey.currentState.save(); | ||||
| LoadingDialog.showLoadingDialog(context); | |||||
| _repository.updatePlot(_crop).then((value) { | |||||
| LoadingDialog.hideLoadingDialog(context); | |||||
| flutterToast.showToast( | |||||
| child: WidgetToast(message: label_update_success)); | |||||
| }).catchError((error) { | |||||
| _scaffoldKey.currentState.showSnackBar(SnackBar( | |||||
| content: Row( | |||||
| mainAxisAlignment: MainAxisAlignment.spaceBetween, | |||||
| children: <Widget>[ | |||||
| Flexible(child: Text(AppException.handleError(error))), | |||||
| Icon(Icons.error), | |||||
| ], | |||||
| ), | |||||
| backgroundColor: Colors.red, | |||||
| duration: Duration(seconds: 3), | |||||
| )); | |||||
| LoadingDialog.hideLoadingDialog(context); | |||||
| }); | |||||
| } else { | } else { | ||||
| _autoValidate = true; | _autoValidate = true; | ||||
| } | } | ||||
| Icons.done, | Icons.done, | ||||
| ), | ), | ||||
| disabledColor: Colors.grey, | disabledColor: Colors.grey, | ||||
| onPressed: controller.isChanged == false ? null : () {}, | |||||
| onPressed: controller.isChanged == false | |||||
| ? null | |||||
| : () { | |||||
| FocusScopeNode currentFocus = FocusScope.of(context); | |||||
| if (!currentFocus.hasPrimaryFocus) { | |||||
| currentFocus.unfocus(); | |||||
| } | |||||
| _validateInputs(); | |||||
| }, | |||||
| ); | ); | ||||
| }, | }, | ||||
| ) | ) |
| const String label_list_empty = "Dữ liệu rỗng"; | const String label_list_empty = "Dữ liệu rỗng"; | ||||
| const String label_error_get_data = "Lỗi tải dữ liệu"; | const String label_error_get_data = "Lỗi tải dữ liệu"; | ||||
| const String label_update_success = "Cập nhật thành công"; | |||||
| const String label_add_success = "Thêm thành công"; | |||||
| //Exception | //Exception | ||||
| const String exception_common = "Đã có lỗi xảy ra"; | const String exception_common = "Đã có lỗi xảy ra"; | ||||
| const String exception_dio_cancle = "Truy vấn đến máy chủ bị huỷ"; | const String exception_dio_cancle = "Truy vấn đến máy chủ bị huỷ"; |
| name: _fe_analyzer_shared | name: _fe_analyzer_shared | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "7.0.0" | |||||
| version: "6.0.0" | |||||
| analyzer: | analyzer: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: analyzer | name: analyzer | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.39.17" | |||||
| archive: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: archive | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "2.0.13" | |||||
| version: "0.39.14" | |||||
| args: | args: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: async | name: async | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "2.4.1" | |||||
| version: "2.4.2" | |||||
| barcode_scan: | barcode_scan: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| name: build | name: build | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.2.2" | |||||
| version: "1.3.0" | |||||
| build_config: | build_config: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: build_config | name: build_config | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.4.1+1" | |||||
| version: "0.4.2" | |||||
| build_daemon: | build_daemon: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: build_resolvers | name: build_resolvers | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.3.7" | |||||
| version: "1.3.11" | |||||
| build_runner: | build_runner: | ||||
| dependency: "direct dev" | dependency: "direct dev" | ||||
| description: | description: | ||||
| name: build_runner | name: build_runner | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.7.4" | |||||
| version: "1.10.1" | |||||
| build_runner_core: | build_runner_core: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: build_runner_core | name: build_runner_core | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "4.3.0" | |||||
| version: "6.0.1" | |||||
| built_collection: | built_collection: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.1.2" | version: "0.1.2" | ||||
| characters: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: characters | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "1.0.0" | |||||
| charcode: | charcode: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: cli_util | name: cli_util | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.2.0" | |||||
| version: "0.1.4" | |||||
| clock: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: clock | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "1.0.1" | |||||
| code_builder: | code_builder: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: collection | name: collection | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.14.12" | |||||
| version: "1.14.13" | |||||
| convert: | convert: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: crypto | name: crypto | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "2.1.4" | |||||
| version: "2.1.5" | |||||
| csslib: | csslib: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.2.5" | version: "1.2.5" | ||||
| fake_async: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: fake_async | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "1.1.0" | |||||
| file: | file: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "3.1.4" | version: "3.1.4" | ||||
| image: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: image | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "2.1.12" | |||||
| image_picker: | image_picker: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| name: matcher | name: matcher | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.12.6" | |||||
| version: "0.12.8" | |||||
| meta: | meta: | ||||
| dependency: "direct main" | dependency: "direct main" | ||||
| description: | description: | ||||
| name: path | name: path | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.6.4" | |||||
| version: "1.7.0" | |||||
| path_provider_linux: | path_provider_linux: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.9.0" | version: "1.9.0" | ||||
| petitparser: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: petitparser | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "2.4.0" | |||||
| platform: | platform: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: stack_trace | name: stack_trace | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.9.3" | |||||
| version: "1.9.5" | |||||
| stream_channel: | stream_channel: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: stream_transform | name: stream_transform | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.0.20" | |||||
| version: "1.2.0" | |||||
| string_scanner: | string_scanner: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: test_api | name: test_api | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.2.15" | |||||
| version: "0.2.17" | |||||
| timing: | timing: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| name: typed_data | name: typed_data | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "1.1.6" | |||||
| version: "1.2.0" | |||||
| vector_math: | vector_math: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| url: "https://pub.dartlang.org" | url: "https://pub.dartlang.org" | ||||
| source: hosted | source: hosted | ||||
| version: "0.1.0" | version: "0.1.0" | ||||
| xml: | |||||
| dependency: transitive | |||||
| description: | |||||
| name: xml | |||||
| url: "https://pub.dartlang.org" | |||||
| source: hosted | |||||
| version: "3.6.1" | |||||
| yaml: | yaml: | ||||
| dependency: transitive | dependency: transitive | ||||
| description: | description: | ||||
| source: hosted | source: hosted | ||||
| version: "2.2.1" | version: "2.2.1" | ||||
| sdks: | sdks: | ||||
| dart: ">=2.8.0 <3.0.0" | |||||
| dart: ">=2.9.0-14.0.dev <3.0.0" | |||||
| flutter: ">=1.16.0 <2.0.0" | flutter: ">=1.16.0 <2.0.0" |