Showing
3 changed files
with
123 additions
and
100 deletions
lib/extension/widget_ext.dart
0 → 100644
| 1 | +import 'package:flutter/material.dart'; | ||
| 2 | +import 'package:hostex_flutter/generated/l10n.dart'; | ||
| 3 | +import 'package:hostex_flutter/generated/assets.dart'; | ||
| 4 | +import 'package:hostex_flutter/ui/extension/widget_ext.dart'; | ||
| 5 | + | ||
| 6 | +extension WidgetExt on Widget { | ||
| 7 | + Expanded expanded({int flex = 1}) { | ||
| 8 | + return Expanded(flex: flex, child: this); | ||
| 9 | + } | ||
| 10 | + | ||
| 11 | + SafeArea safe() { | ||
| 12 | + return SafeArea(child: this); | ||
| 13 | + } | ||
| 14 | +} |
| 1 | import 'dart:async'; | 1 | import 'dart:async'; |
| 2 | import 'dart:convert'; | 2 | import 'dart:convert'; |
| 3 | +import 'package:Parlando/extension/widget_ext.dart'; | ||
| 3 | import 'package:Parlando/models/nearby_response.dart' as nearby; | 4 | import 'package:Parlando/models/nearby_response.dart' as nearby; |
| 4 | import 'package:Parlando/routers/fluro_navigator.dart'; | 5 | import 'package:Parlando/routers/fluro_navigator.dart'; |
| 6 | +import 'package:Parlando/util/log_utils.dart'; | ||
| 5 | import 'package:Parlando/util/toast_utils.dart'; | 7 | import 'package:Parlando/util/toast_utils.dart'; |
| 6 | import 'package:flutter/material.dart'; | 8 | import 'package:flutter/material.dart'; |
| 7 | import 'package:Parlando/widgets/my_button.dart'; | 9 | import 'package:Parlando/widgets/my_button.dart'; |
| ... | @@ -30,8 +32,7 @@ class AddressSelectPageState extends State<AddressSelectPage> { | ... | @@ -30,8 +32,7 @@ class AddressSelectPageState extends State<AddressSelectPage> { |
| 30 | late StreamSubscription _locationSubscription; | 32 | late StreamSubscription _locationSubscription; |
| 31 | String radius = "1000"; | 33 | String radius = "1000"; |
| 32 | String apiKey = "AIzaSyDQZsMULyO-UtiSht4_MFi1uHT4BIqasjw"; | 34 | String apiKey = "AIzaSyDQZsMULyO-UtiSht4_MFi1uHT4BIqasjw"; |
| 33 | - nearby.NearbyPlacesResponse nearbyPlacesResponse = | 35 | + nearby.NearbyPlacesResponse nearbyPlacesResponse = nearby.NearbyPlacesResponse(); |
| 34 | - nearby.NearbyPlacesResponse(); | ||
| 35 | 36 | ||
| 36 | @override | 37 | @override |
| 37 | void dispose() { | 38 | void dispose() { |
| ... | @@ -65,9 +66,10 @@ class AddressSelectPageState extends State<AddressSelectPage> { | ... | @@ -65,9 +66,10 @@ class AddressSelectPageState extends State<AddressSelectPage> { |
| 65 | } | 66 | } |
| 66 | } | 67 | } |
| 67 | 68 | ||
| 68 | - _locationSubscription = | 69 | + _locationSubscription = location.onLocationChanged.listen((LocationData currentLocation) { |
| 69 | - location.onLocationChanged.listen((LocationData currentLocation) { | ||
| 70 | _center = LatLng(currentLocation.latitude!, currentLocation.longitude!); | 70 | _center = LatLng(currentLocation.latitude!, currentLocation.longitude!); |
| 71 | + Log.e("currentLocation.latitude ${currentLocation.latitude}"); | ||
| 72 | + getNearbyPlaces(""); | ||
| 71 | }); | 73 | }); |
| 72 | } | 74 | } |
| 73 | 75 | ||
| ... | @@ -76,8 +78,7 @@ class AddressSelectPageState extends State<AddressSelectPage> { | ... | @@ -76,8 +78,7 @@ class AddressSelectPageState extends State<AddressSelectPage> { |
| 76 | '${'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${_center.latitude},${_center.longitude}&radius=$radius'}&key=$apiKey&keyword=$keyword'; | 78 | '${'https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=${_center.latitude},${_center.longitude}&radius=$radius'}&key=$apiKey&keyword=$keyword'; |
| 77 | var url = Uri.parse(uri); | 79 | var url = Uri.parse(uri); |
| 78 | var response = await http.post(url); | 80 | var response = await http.post(url); |
| 79 | - nearbyPlacesResponse = | 81 | + nearbyPlacesResponse = nearby.NearbyPlacesResponse.fromJson(jsonDecode(response.body)); |
| 80 | - nearby.NearbyPlacesResponse.fromJson(jsonDecode(response.body)); | ||
| 81 | _list = nearbyPlacesResponse.results!; | 82 | _list = nearbyPlacesResponse.results!; |
| 82 | setState(() { | 83 | setState(() { |
| 83 | isLoading = false; | 84 | isLoading = false; |
| ... | @@ -100,68 +101,68 @@ class AddressSelectPageState extends State<AddressSelectPage> { | ... | @@ -100,68 +101,68 @@ class AddressSelectPageState extends State<AddressSelectPage> { |
| 100 | getNearbyPlaces(""); | 101 | getNearbyPlaces(""); |
| 101 | } | 102 | } |
| 102 | 103 | ||
| 104 | + void _goToCurrentCenter() { | ||
| 105 | + mapController.animateCamera(CameraUpdate.newLatLng(_center)); | ||
| 106 | + } | ||
| 107 | + | ||
| 103 | @override | 108 | @override |
| 104 | Widget build(BuildContext context) { | 109 | Widget build(BuildContext context) { |
| 110 | + var loaderView = const GFLoader().expanded(flex: 11); | ||
| 111 | + var realList = ListView.separated( | ||
| 112 | + controller: _controller, | ||
| 113 | + itemCount: _list.length, | ||
| 114 | + separatorBuilder: (_, index) => const Divider(), | ||
| 115 | + itemBuilder: (_, index) { | ||
| 116 | + return _AddressItem( | ||
| 117 | + isSelected: _index == index, | ||
| 118 | + date: _list[index], | ||
| 119 | + onTap: () { | ||
| 120 | + _index = index; | ||
| 121 | + setState(() {}); | ||
| 122 | + }, | ||
| 123 | + ); | ||
| 124 | + }, | ||
| 125 | + ).expanded(flex: 11); | ||
| 126 | + var listHolder = isLoading ? loaderView : realList; | ||
| 127 | + | ||
| 128 | + var searchBar = SearchBar( | ||
| 129 | + hintText: '搜索地址', | ||
| 130 | + onPressed: (text) async { | ||
| 131 | + isLoading = true; | ||
| 132 | + _controller.animateTo(0.0, duration: const Duration(milliseconds: 10), curve: Curves.ease); | ||
| 133 | + _index = 0; | ||
| 134 | + // 构造检索参数 | ||
| 135 | + getNearbyPlaces(text); | ||
| 136 | + }, | ||
| 137 | + ); | ||
| 138 | + var map = GoogleMap( | ||
| 139 | + onMapCreated: _onMapCreated, | ||
| 140 | + initialCameraPosition: CameraPosition(target: _center, zoom: 16.0), | ||
| 141 | + markers: Set<Marker>.of(markers.values), | ||
| 142 | + ).expanded(flex: 9); | ||
| 105 | return Scaffold( | 143 | return Scaffold( |
| 106 | resizeToAvoidBottomInset: false, | 144 | resizeToAvoidBottomInset: false, |
| 107 | - appBar: SearchBar( | 145 | + appBar: searchBar, |
| 108 | - hintText: '搜索地址', | 146 | + body: Column( |
| 109 | - onPressed: (text) async { | 147 | + children: <Widget>[ |
| 110 | - isLoading = true; | 148 | + map, |
| 111 | - _controller.animateTo(0.0, | 149 | + listHolder, |
| 112 | - duration: const Duration(milliseconds: 10), curve: Curves.ease); | 150 | + initButton(), |
| 113 | - _index = 0; | 151 | + ], |
| 114 | - // 构造检索参数 | 152 | + ).safe(), |
| 115 | - getNearbyPlaces(text); | 153 | + ); |
| 116 | - }, | 154 | + } |
| 117 | - ), | 155 | + |
| 118 | - body: SafeArea( | 156 | + initButton() { |
| 119 | - child: Column( | 157 | + return MyButton( |
| 120 | - children: <Widget>[ | 158 | + onPressed: () { |
| 121 | - Expanded( | 159 | + if (_list.isEmpty) { |
| 122 | - flex: 9, | 160 | + Toast.show('未选择地址!'); |
| 123 | - child: GoogleMap( | 161 | + return; |
| 124 | - onMapCreated: _onMapCreated, | 162 | + } |
| 125 | - initialCameraPosition: CameraPosition( | 163 | + NavigatorUtils.goBackWithParams(context, _list[_index]); |
| 126 | - target: _center, | 164 | + }, |
| 127 | - zoom: 16.0, | 165 | + text: '确认选择地址', |
| 128 | - ), | ||
| 129 | - markers: Set<Marker>.of(markers.values), | ||
| 130 | - ), | ||
| 131 | - ), | ||
| 132 | - Expanded( | ||
| 133 | - flex: 11, | ||
| 134 | - child: isLoading | ||
| 135 | - ? const GFLoader() | ||
| 136 | - : ListView.separated( | ||
| 137 | - controller: _controller, | ||
| 138 | - itemCount: _list.length, | ||
| 139 | - separatorBuilder: (_, index) => const Divider(), | ||
| 140 | - itemBuilder: (_, index) { | ||
| 141 | - return _AddressItem( | ||
| 142 | - isSelected: _index == index, | ||
| 143 | - date: _list[index], | ||
| 144 | - onTap: () { | ||
| 145 | - _index = index; | ||
| 146 | - setState(() {}); | ||
| 147 | - }, | ||
| 148 | - ); | ||
| 149 | - }, | ||
| 150 | - ), | ||
| 151 | - ), | ||
| 152 | - MyButton( | ||
| 153 | - onPressed: () { | ||
| 154 | - if (_list.isEmpty) { | ||
| 155 | - Toast.show('未选择地址!'); | ||
| 156 | - return; | ||
| 157 | - } | ||
| 158 | - NavigatorUtils.goBackWithParams(context, _list[_index]); | ||
| 159 | - }, | ||
| 160 | - text: '确认选择地址', | ||
| 161 | - ) | ||
| 162 | - ], | ||
| 163 | - ), | ||
| 164 | - ), | ||
| 165 | ); | 166 | ); |
| 166 | } | 167 | } |
| 167 | } | 168 | } |
| ... | @@ -173,6 +174,7 @@ class _AddressItem extends StatelessWidget { | ... | @@ -173,6 +174,7 @@ class _AddressItem extends StatelessWidget { |
| 173 | this.isSelected = false, | 174 | this.isSelected = false, |
| 174 | this.onTap, | 175 | this.onTap, |
| 175 | }) : super(key: key); | 176 | }) : super(key: key); |
| 177 | + | ||
| 176 | final nearby.Results date; | 178 | final nearby.Results date; |
| 177 | final bool isSelected; | 179 | final bool isSelected; |
| 178 | final GestureTapCallback? onTap; | 180 | final GestureTapCallback? onTap; |
| ... | @@ -187,15 +189,8 @@ class _AddressItem extends StatelessWidget { | ... | @@ -187,15 +189,8 @@ class _AddressItem extends StatelessWidget { |
| 187 | height: 50.0, | 189 | height: 50.0, |
| 188 | child: Row( | 190 | child: Row( |
| 189 | children: <Widget>[ | 191 | children: <Widget>[ |
| 190 | - Expanded( | 192 | + Text('${date.name} ${date.vicinity}').expanded(), |
| 191 | - child: Text( | 193 | + Visibility(visible: isSelected, child: const Icon(Icons.done, color: Colors.blue)) |
| 192 | - '${date.name} ${date.vicinity}', | ||
| 193 | - ), | ||
| 194 | - ), | ||
| 195 | - Visibility( | ||
| 196 | - visible: isSelected, | ||
| 197 | - child: const Icon(Icons.done, color: Colors.blue), | ||
| 198 | - ) | ||
| 199 | ], | 194 | ], |
| 200 | ), | 195 | ), |
| 201 | ), | 196 | ), | ... | ... |
| ... | @@ -28,7 +28,7 @@ packages: | ... | @@ -28,7 +28,7 @@ packages: |
| 28 | name: archive | 28 | name: archive |
| 29 | url: "https://pub.flutter-io.cn" | 29 | url: "https://pub.flutter-io.cn" |
| 30 | source: hosted | 30 | source: hosted |
| 31 | - version: "3.3.0" | 31 | + version: "3.1.11" |
| 32 | args: | 32 | args: |
| 33 | dependency: transitive | 33 | dependency: transitive |
| 34 | description: | 34 | description: |
| ... | @@ -42,7 +42,7 @@ packages: | ... | @@ -42,7 +42,7 @@ packages: |
| 42 | name: async | 42 | name: async |
| 43 | url: "https://pub.flutter-io.cn" | 43 | url: "https://pub.flutter-io.cn" |
| 44 | source: hosted | 44 | source: hosted |
| 45 | - version: "2.9.0" | 45 | + version: "2.8.2" |
| 46 | boolean_selector: | 46 | boolean_selector: |
| 47 | dependency: transitive | 47 | dependency: transitive |
| 48 | description: | 48 | description: |
| ... | @@ -112,21 +112,21 @@ packages: | ... | @@ -112,21 +112,21 @@ packages: |
| 112 | name: cached_network_image | 112 | name: cached_network_image |
| 113 | url: "https://pub.flutter-io.cn" | 113 | url: "https://pub.flutter-io.cn" |
| 114 | source: hosted | 114 | source: hosted |
| 115 | - version: "3.2.2" | 115 | + version: "3.2.1" |
| 116 | cached_network_image_platform_interface: | 116 | cached_network_image_platform_interface: |
| 117 | dependency: transitive | 117 | dependency: transitive |
| 118 | description: | 118 | description: |
| 119 | name: cached_network_image_platform_interface | 119 | name: cached_network_image_platform_interface |
| 120 | url: "https://pub.flutter-io.cn" | 120 | url: "https://pub.flutter-io.cn" |
| 121 | source: hosted | 121 | source: hosted |
| 122 | - version: "2.0.0" | 122 | + version: "1.0.0" |
| 123 | cached_network_image_web: | 123 | cached_network_image_web: |
| 124 | dependency: transitive | 124 | dependency: transitive |
| 125 | description: | 125 | description: |
| 126 | name: cached_network_image_web | 126 | name: cached_network_image_web |
| 127 | url: "https://pub.flutter-io.cn" | 127 | url: "https://pub.flutter-io.cn" |
| 128 | source: hosted | 128 | source: hosted |
| 129 | - version: "1.0.2" | 129 | + version: "1.0.1" |
| 130 | camera: | 130 | camera: |
| 131 | dependency: "direct main" | 131 | dependency: "direct main" |
| 132 | description: | 132 | description: |
| ... | @@ -168,7 +168,14 @@ packages: | ... | @@ -168,7 +168,14 @@ packages: |
| 168 | name: characters | 168 | name: characters |
| 169 | url: "https://pub.flutter-io.cn" | 169 | url: "https://pub.flutter-io.cn" |
| 170 | source: hosted | 170 | source: hosted |
| 171 | - version: "1.2.1" | 171 | + version: "1.2.0" |
| 172 | + charcode: | ||
| 173 | + dependency: transitive | ||
| 174 | + description: | ||
| 175 | + name: charcode | ||
| 176 | + url: "https://pub.flutter-io.cn" | ||
| 177 | + source: hosted | ||
| 178 | + version: "1.3.1" | ||
| 172 | checked_yaml: | 179 | checked_yaml: |
| 173 | dependency: transitive | 180 | dependency: transitive |
| 174 | description: | 181 | description: |
| ... | @@ -189,7 +196,7 @@ packages: | ... | @@ -189,7 +196,7 @@ packages: |
| 189 | name: clock | 196 | name: clock |
| 190 | url: "https://pub.flutter-io.cn" | 197 | url: "https://pub.flutter-io.cn" |
| 191 | source: hosted | 198 | source: hosted |
| 192 | - version: "1.1.1" | 199 | + version: "1.1.0" |
| 193 | code_builder: | 200 | code_builder: |
| 194 | dependency: transitive | 201 | dependency: transitive |
| 195 | description: | 202 | description: |
| ... | @@ -224,7 +231,7 @@ packages: | ... | @@ -224,7 +231,7 @@ packages: |
| 224 | name: coverage | 231 | name: coverage |
| 225 | url: "https://pub.flutter-io.cn" | 232 | url: "https://pub.flutter-io.cn" |
| 226 | source: hosted | 233 | source: hosted |
| 227 | - version: "1.5.0" | 234 | + version: "1.2.0" |
| 228 | cross_file: | 235 | cross_file: |
| 229 | dependency: transitive | 236 | dependency: transitive |
| 230 | description: | 237 | description: |
| ... | @@ -238,7 +245,7 @@ packages: | ... | @@ -238,7 +245,7 @@ packages: |
| 238 | name: crypto | 245 | name: crypto |
| 239 | url: "https://pub.flutter-io.cn" | 246 | url: "https://pub.flutter-io.cn" |
| 240 | source: hosted | 247 | source: hosted |
| 241 | - version: "3.0.2" | 248 | + version: "3.0.1" |
| 242 | csslib: | 249 | csslib: |
| 243 | dependency: transitive | 250 | dependency: transitive |
| 244 | description: | 251 | description: |
| ... | @@ -336,7 +343,7 @@ packages: | ... | @@ -336,7 +343,7 @@ packages: |
| 336 | name: fake_async | 343 | name: fake_async |
| 337 | url: "https://pub.flutter-io.cn" | 344 | url: "https://pub.flutter-io.cn" |
| 338 | source: hosted | 345 | source: hosted |
| 339 | - version: "1.3.1" | 346 | + version: "1.3.0" |
| 340 | ffi: | 347 | ffi: |
| 341 | dependency: transitive | 348 | dependency: transitive |
| 342 | description: | 349 | description: |
| ... | @@ -463,7 +470,7 @@ packages: | ... | @@ -463,7 +470,7 @@ packages: |
| 463 | name: flutter_native_splash | 470 | name: flutter_native_splash |
| 464 | url: "https://pub.flutter-io.cn" | 471 | url: "https://pub.flutter-io.cn" |
| 465 | source: hosted | 472 | source: hosted |
| 466 | - version: "2.2.10+1" | 473 | + version: "2.2.9" |
| 467 | flutter_plugin_android_lifecycle: | 474 | flutter_plugin_android_lifecycle: |
| 468 | dependency: transitive | 475 | dependency: transitive |
| 469 | description: | 476 | description: |
| ... | @@ -757,6 +764,13 @@ packages: | ... | @@ -757,6 +764,13 @@ packages: |
| 757 | url: "https://pub.flutter-io.cn" | 764 | url: "https://pub.flutter-io.cn" |
| 758 | source: hosted | 765 | source: hosted |
| 759 | version: "4.1.0" | 766 | version: "4.1.0" |
| 767 | + lint: | ||
| 768 | + dependency: transitive | ||
| 769 | + description: | ||
| 770 | + name: lint | ||
| 771 | + url: "https://pub.flutter-io.cn" | ||
| 772 | + source: hosted | ||
| 773 | + version: "1.10.0" | ||
| 760 | lints: | 774 | lints: |
| 761 | dependency: transitive | 775 | dependency: transitive |
| 762 | description: | 776 | description: |
| ... | @@ -805,21 +819,21 @@ packages: | ... | @@ -805,21 +819,21 @@ packages: |
| 805 | name: matcher | 819 | name: matcher |
| 806 | url: "https://pub.flutter-io.cn" | 820 | url: "https://pub.flutter-io.cn" |
| 807 | source: hosted | 821 | source: hosted |
| 808 | - version: "0.12.12" | 822 | + version: "0.12.11" |
| 809 | material_color_utilities: | 823 | material_color_utilities: |
| 810 | dependency: transitive | 824 | dependency: transitive |
| 811 | description: | 825 | description: |
| 812 | name: material_color_utilities | 826 | name: material_color_utilities |
| 813 | url: "https://pub.flutter-io.cn" | 827 | url: "https://pub.flutter-io.cn" |
| 814 | source: hosted | 828 | source: hosted |
| 815 | - version: "0.1.5" | 829 | + version: "0.1.4" |
| 816 | meta: | 830 | meta: |
| 817 | dependency: transitive | 831 | dependency: transitive |
| 818 | description: | 832 | description: |
| 819 | name: meta | 833 | name: meta |
| 820 | url: "https://pub.flutter-io.cn" | 834 | url: "https://pub.flutter-io.cn" |
| 821 | source: hosted | 835 | source: hosted |
| 822 | - version: "1.8.0" | 836 | + version: "1.7.0" |
| 823 | mime: | 837 | mime: |
| 824 | dependency: transitive | 838 | dependency: transitive |
| 825 | description: | 839 | description: |
| ... | @@ -868,7 +882,7 @@ packages: | ... | @@ -868,7 +882,7 @@ packages: |
| 868 | name: path | 882 | name: path |
| 869 | url: "https://pub.flutter-io.cn" | 883 | url: "https://pub.flutter-io.cn" |
| 870 | source: hosted | 884 | source: hosted |
| 871 | - version: "1.8.2" | 885 | + version: "1.8.1" |
| 872 | path_provider: | 886 | path_provider: |
| 873 | dependency: "direct main" | 887 | dependency: "direct main" |
| 874 | description: | 888 | description: |
| ... | @@ -1272,7 +1286,7 @@ packages: | ... | @@ -1272,7 +1286,7 @@ packages: |
| 1272 | name: source_span | 1286 | name: source_span |
| 1273 | url: "https://pub.flutter-io.cn" | 1287 | url: "https://pub.flutter-io.cn" |
| 1274 | source: hosted | 1288 | source: hosted |
| 1275 | - version: "1.9.0" | 1289 | + version: "1.8.2" |
| 1276 | sp_util: | 1290 | sp_util: |
| 1277 | dependency: transitive | 1291 | dependency: transitive |
| 1278 | description: | 1292 | description: |
| ... | @@ -1293,7 +1307,7 @@ packages: | ... | @@ -1293,7 +1307,7 @@ packages: |
| 1293 | name: sqflite | 1307 | name: sqflite |
| 1294 | url: "https://pub.flutter-io.cn" | 1308 | url: "https://pub.flutter-io.cn" |
| 1295 | source: hosted | 1309 | source: hosted |
| 1296 | - version: "2.1.0+1" | 1310 | + version: "2.0.3+1" |
| 1297 | sqflite_common: | 1311 | sqflite_common: |
| 1298 | dependency: transitive | 1312 | dependency: transitive |
| 1299 | description: | 1313 | description: |
| ... | @@ -1335,14 +1349,14 @@ packages: | ... | @@ -1335,14 +1349,14 @@ packages: |
| 1335 | name: string_scanner | 1349 | name: string_scanner |
| 1336 | url: "https://pub.flutter-io.cn" | 1350 | url: "https://pub.flutter-io.cn" |
| 1337 | source: hosted | 1351 | source: hosted |
| 1338 | - version: "1.1.1" | 1352 | + version: "1.1.0" |
| 1339 | sync_http: | 1353 | sync_http: |
| 1340 | dependency: transitive | 1354 | dependency: transitive |
| 1341 | description: | 1355 | description: |
| 1342 | name: sync_http | 1356 | name: sync_http |
| 1343 | url: "https://pub.flutter-io.cn" | 1357 | url: "https://pub.flutter-io.cn" |
| 1344 | source: hosted | 1358 | source: hosted |
| 1345 | - version: "0.3.1" | 1359 | + version: "0.3.0" |
| 1346 | synchronized: | 1360 | synchronized: |
| 1347 | dependency: transitive | 1361 | dependency: transitive |
| 1348 | description: | 1362 | description: |
| ... | @@ -1363,28 +1377,28 @@ packages: | ... | @@ -1363,28 +1377,28 @@ packages: |
| 1363 | name: term_glyph | 1377 | name: term_glyph |
| 1364 | url: "https://pub.flutter-io.cn" | 1378 | url: "https://pub.flutter-io.cn" |
| 1365 | source: hosted | 1379 | source: hosted |
| 1366 | - version: "1.2.1" | 1380 | + version: "1.2.0" |
| 1367 | test: | 1381 | test: |
| 1368 | dependency: "direct dev" | 1382 | dependency: "direct dev" |
| 1369 | description: | 1383 | description: |
| 1370 | name: test | 1384 | name: test |
| 1371 | url: "https://pub.flutter-io.cn" | 1385 | url: "https://pub.flutter-io.cn" |
| 1372 | source: hosted | 1386 | source: hosted |
| 1373 | - version: "1.21.4" | 1387 | + version: "1.21.1" |
| 1374 | test_api: | 1388 | test_api: |
| 1375 | dependency: transitive | 1389 | dependency: transitive |
| 1376 | description: | 1390 | description: |
| 1377 | name: test_api | 1391 | name: test_api |
| 1378 | url: "https://pub.flutter-io.cn" | 1392 | url: "https://pub.flutter-io.cn" |
| 1379 | source: hosted | 1393 | source: hosted |
| 1380 | - version: "0.4.12" | 1394 | + version: "0.4.9" |
| 1381 | test_core: | 1395 | test_core: |
| 1382 | dependency: transitive | 1396 | dependency: transitive |
| 1383 | description: | 1397 | description: |
| 1384 | name: test_core | 1398 | name: test_core |
| 1385 | url: "https://pub.flutter-io.cn" | 1399 | url: "https://pub.flutter-io.cn" |
| 1386 | source: hosted | 1400 | source: hosted |
| 1387 | - version: "0.4.16" | 1401 | + version: "0.4.13" |
| 1388 | timing: | 1402 | timing: |
| 1389 | dependency: transitive | 1403 | dependency: transitive |
| 1390 | description: | 1404 | description: |
| ... | @@ -1405,7 +1419,7 @@ packages: | ... | @@ -1405,7 +1419,7 @@ packages: |
| 1405 | name: typed_data | 1419 | name: typed_data |
| 1406 | url: "https://pub.flutter-io.cn" | 1420 | url: "https://pub.flutter-io.cn" |
| 1407 | source: hosted | 1421 | source: hosted |
| 1408 | - version: "1.3.1" | 1422 | + version: "1.3.0" |
| 1409 | universal_io: | 1423 | universal_io: |
| 1410 | dependency: transitive | 1424 | dependency: transitive |
| 1411 | description: | 1425 | description: |
| ... | @@ -1538,7 +1552,7 @@ packages: | ... | @@ -1538,7 +1552,7 @@ packages: |
| 1538 | name: vm_service | 1552 | name: vm_service |
| 1539 | url: "https://pub.flutter-io.cn" | 1553 | url: "https://pub.flutter-io.cn" |
| 1540 | source: hosted | 1554 | source: hosted |
| 1541 | - version: "9.0.0" | 1555 | + version: "8.2.2" |
| 1542 | wakelock: | 1556 | wakelock: |
| 1543 | dependency: "direct main" | 1557 | dependency: "direct main" |
| 1544 | description: | 1558 | description: |
| ... | @@ -1659,5 +1673,5 @@ packages: | ... | @@ -1659,5 +1673,5 @@ packages: |
| 1659 | source: hosted | 1673 | source: hosted |
| 1660 | version: "3.1.1" | 1674 | version: "3.1.1" |
| 1661 | sdks: | 1675 | sdks: |
| 1662 | - dart: ">=2.18.0 <3.0.0" | 1676 | + dart: ">=2.17.0 <3.0.0" |
| 1663 | - flutter: ">=3.3.0" | 1677 | + flutter: ">=3.0.0" | ... | ... |
-
Please register or login to post a comment