Jonny Borges
Committed by GitHub

Merge pull request #604 from mohak852/master

Added Persistent bottom sheet
  1 +#Mon Sep 14 00:47:46 IST 2020
  2 +gradle.version=5.6.2
1 org.gradle.jvmargs=-Xmx1536M 1 org.gradle.jvmargs=-Xmx1536M
2 android.useAndroidX=true 2 android.useAndroidX=true
3 android.enableJetifier=true 3 android.enableJetifier=true
  4 +android.enableR8=true
@@ -44,6 +44,23 @@ class HomeView extends GetView<HomeController> { @@ -44,6 +44,23 @@ class HomeView extends GetView<HomeController> {
44 fontSize: 30, 44 fontSize: 30,
45 ), 45 ),
46 ), 46 ),
  47 + RaisedButton(
  48 + child: Text("data"),
  49 + onPressed: (){
  50 + Get.bottomSheet(
  51 + BottomSheet(
  52 + onClosing: (){},
  53 + backgroundColor: Colors.amber,
  54 + builder: (context) {
  55 + return Container(
  56 + height: 50,
  57 + color: Colors.amber,
  58 + );
  59 + },
  60 + ),
  61 + persistent: false
  62 + );
  63 + }),
47 Text( 64 Text(
48 '${controller.cases.value.global.totalConfirmed}', 65 '${controller.cases.value.global.totalConfirmed}',
49 style: TextStyle(fontSize: 45, fontWeight: FontWeight.bold), 66 style: TextStyle(fontSize: 45, fontWeight: FontWeight.bold),
@@ -7,42 +7,42 @@ packages: @@ -7,42 +7,42 @@ packages:
7 name: async 7 name: async
8 url: "https://pub.dartlang.org" 8 url: "https://pub.dartlang.org"
9 source: hosted 9 source: hosted
10 - version: "2.5.0-nullsafety" 10 + version: "2.4.2"
11 boolean_selector: 11 boolean_selector:
12 dependency: transitive 12 dependency: transitive
13 description: 13 description:
14 name: boolean_selector 14 name: boolean_selector
15 url: "https://pub.dartlang.org" 15 url: "https://pub.dartlang.org"
16 source: hosted 16 source: hosted
17 - version: "2.1.0-nullsafety" 17 + version: "2.0.0"
18 characters: 18 characters:
19 dependency: transitive 19 dependency: transitive
20 description: 20 description:
21 name: characters 21 name: characters
22 url: "https://pub.dartlang.org" 22 url: "https://pub.dartlang.org"
23 source: hosted 23 source: hosted
24 - version: "1.1.0-nullsafety.2" 24 + version: "1.0.0"
25 charcode: 25 charcode:
26 dependency: transitive 26 dependency: transitive
27 description: 27 description:
28 name: charcode 28 name: charcode
29 url: "https://pub.dartlang.org" 29 url: "https://pub.dartlang.org"
30 source: hosted 30 source: hosted
31 - version: "1.2.0-nullsafety" 31 + version: "1.1.3"
32 clock: 32 clock:
33 dependency: transitive 33 dependency: transitive
34 description: 34 description:
35 name: clock 35 name: clock
36 url: "https://pub.dartlang.org" 36 url: "https://pub.dartlang.org"
37 source: hosted 37 source: hosted
38 - version: "1.1.0-nullsafety" 38 + version: "1.0.1"
39 collection: 39 collection:
40 dependency: transitive 40 dependency: transitive
41 description: 41 description:
42 name: collection 42 name: collection
43 url: "https://pub.dartlang.org" 43 url: "https://pub.dartlang.org"
44 source: hosted 44 source: hosted
45 - version: "1.15.0-nullsafety.2" 45 + version: "1.14.13"
46 dio: 46 dio:
47 dependency: "direct main" 47 dependency: "direct main"
48 description: 48 description:
@@ -56,7 +56,7 @@ packages: @@ -56,7 +56,7 @@ packages:
56 name: fake_async 56 name: fake_async
57 url: "https://pub.dartlang.org" 57 url: "https://pub.dartlang.org"
58 source: hosted 58 source: hosted
59 - version: "1.1.0-nullsafety" 59 + version: "1.1.0"
60 flutter: 60 flutter:
61 dependency: "direct main" 61 dependency: "direct main"
62 description: flutter 62 description: flutter
@@ -87,21 +87,21 @@ packages: @@ -87,21 +87,21 @@ packages:
87 name: matcher 87 name: matcher
88 url: "https://pub.dartlang.org" 88 url: "https://pub.dartlang.org"
89 source: hosted 89 source: hosted
90 - version: "0.12.10-nullsafety" 90 + version: "0.12.8"
91 meta: 91 meta:
92 dependency: transitive 92 dependency: transitive
93 description: 93 description:
94 name: meta 94 name: meta
95 url: "https://pub.dartlang.org" 95 url: "https://pub.dartlang.org"
96 source: hosted 96 source: hosted
97 - version: "1.3.0-nullsafety.2" 97 + version: "1.1.8"
98 path: 98 path:
99 dependency: transitive 99 dependency: transitive
100 description: 100 description:
101 name: path 101 name: path
102 url: "https://pub.dartlang.org" 102 url: "https://pub.dartlang.org"
103 source: hosted 103 source: hosted
104 - version: "1.8.0-nullsafety" 104 + version: "1.7.0"
105 sky_engine: 105 sky_engine:
106 dependency: transitive 106 dependency: transitive
107 description: flutter 107 description: flutter
@@ -113,55 +113,55 @@ packages: @@ -113,55 +113,55 @@ packages:
113 name: source_span 113 name: source_span
114 url: "https://pub.dartlang.org" 114 url: "https://pub.dartlang.org"
115 source: hosted 115 source: hosted
116 - version: "1.8.0-nullsafety" 116 + version: "1.7.0"
117 stack_trace: 117 stack_trace:
118 dependency: transitive 118 dependency: transitive
119 description: 119 description:
120 name: stack_trace 120 name: stack_trace
121 url: "https://pub.dartlang.org" 121 url: "https://pub.dartlang.org"
122 source: hosted 122 source: hosted
123 - version: "1.10.0-nullsafety" 123 + version: "1.9.5"
124 stream_channel: 124 stream_channel:
125 dependency: transitive 125 dependency: transitive
126 description: 126 description:
127 name: stream_channel 127 name: stream_channel
128 url: "https://pub.dartlang.org" 128 url: "https://pub.dartlang.org"
129 source: hosted 129 source: hosted
130 - version: "2.1.0-nullsafety" 130 + version: "2.0.0"
131 string_scanner: 131 string_scanner:
132 dependency: transitive 132 dependency: transitive
133 description: 133 description:
134 name: string_scanner 134 name: string_scanner
135 url: "https://pub.dartlang.org" 135 url: "https://pub.dartlang.org"
136 source: hosted 136 source: hosted
137 - version: "1.1.0-nullsafety" 137 + version: "1.0.5"
138 term_glyph: 138 term_glyph:
139 dependency: transitive 139 dependency: transitive
140 description: 140 description:
141 name: term_glyph 141 name: term_glyph
142 url: "https://pub.dartlang.org" 142 url: "https://pub.dartlang.org"
143 source: hosted 143 source: hosted
144 - version: "1.2.0-nullsafety" 144 + version: "1.1.0"
145 test_api: 145 test_api:
146 dependency: transitive 146 dependency: transitive
147 description: 147 description:
148 name: test_api 148 name: test_api
149 url: "https://pub.dartlang.org" 149 url: "https://pub.dartlang.org"
150 source: hosted 150 source: hosted
151 - version: "0.2.19-nullsafety" 151 + version: "0.2.17"
152 typed_data: 152 typed_data:
153 dependency: transitive 153 dependency: transitive
154 description: 154 description:
155 name: typed_data 155 name: typed_data
156 url: "https://pub.dartlang.org" 156 url: "https://pub.dartlang.org"
157 source: hosted 157 source: hosted
158 - version: "1.3.0-nullsafety.2" 158 + version: "1.2.0"
159 vector_math: 159 vector_math:
160 dependency: transitive 160 dependency: transitive
161 description: 161 description:
162 name: vector_math 162 name: vector_math
163 url: "https://pub.dartlang.org" 163 url: "https://pub.dartlang.org"
164 source: hosted 164 source: hosted
165 - version: "2.1.0-nullsafety.2" 165 + version: "2.0.8"
166 sdks: 166 sdks:
167 - dart: ">=2.10.0-0.0.dev <2.10.0" 167 + dart: ">=2.9.0-14.0.dev <3.0.0"
@@ -6,6 +6,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -6,6 +6,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
6 this.theme, 6 this.theme,
7 this.barrierLabel, 7 this.barrierLabel,
8 this.backgroundColor, 8 this.backgroundColor,
  9 + this.isPersistent,
9 this.elevation, 10 this.elevation,
10 this.shape, 11 this.shape,
11 this.removeTop = true, 12 this.removeTop = true,
@@ -20,7 +21,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -20,7 +21,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
20 assert(isDismissible != null), 21 assert(isDismissible != null),
21 assert(enableDrag != null), 22 assert(enableDrag != null),
22 super(settings: settings); 23 super(settings: settings);
23 - 24 + final bool isPersistent;
24 final WidgetBuilder builder; 25 final WidgetBuilder builder;
25 final ThemeData theme; 26 final ThemeData theme;
26 final bool isScrollControlled; 27 final bool isScrollControlled;
@@ -79,6 +80,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -79,6 +80,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
79 elevation: 80 elevation:
80 elevation ?? sheetTheme?.modalElevation ?? sheetTheme?.elevation, 81 elevation ?? sheetTheme?.modalElevation ?? sheetTheme?.elevation,
81 shape: shape, 82 shape: shape,
  83 +
82 clipBehavior: clipBehavior, 84 clipBehavior: clipBehavior,
83 isScrollControlled: isScrollControlled, 85 isScrollControlled: isScrollControlled,
84 enableDrag: enableDrag, 86 enableDrag: enableDrag,
@@ -100,10 +102,11 @@ class _GetModalBottomSheet<T> extends StatefulWidget { @@ -100,10 +102,11 @@ class _GetModalBottomSheet<T> extends StatefulWidget {
100 this.clipBehavior, 102 this.clipBehavior,
101 this.isScrollControlled = false, 103 this.isScrollControlled = false,
102 this.enableDrag = true, 104 this.enableDrag = true,
  105 + this.isPersistent = false,
103 }) : assert(isScrollControlled != null), 106 }) : assert(isScrollControlled != null),
104 assert(enableDrag != null), 107 assert(enableDrag != null),
105 super(key: key); 108 super(key: key);
106 - 109 + final bool isPersistent;
107 final GetModalBottomSheetRoute<T> route; 110 final GetModalBottomSheetRoute<T> route;
108 final bool isScrollControlled; 111 final bool isScrollControlled;
109 final Color backgroundColor; 112 final Color backgroundColor;
@@ -142,6 +145,109 @@ class _GetModalBottomSheetState<T> extends State<_GetModalBottomSheet<T>> { @@ -142,6 +145,109 @@ class _GetModalBottomSheetState<T> extends State<_GetModalBottomSheet<T>> {
142 final animationValue = mediaQuery.accessibleNavigation 145 final animationValue = mediaQuery.accessibleNavigation
143 ? 1.0 146 ? 1.0
144 : widget.route.animation.value; 147 : widget.route.animation.value;
  148 + return Semantics(
  149 + scopesRoute: true,
  150 + namesRoute: true,
  151 + label: routeLabel,
  152 + explicitChildNodes: true,
  153 + child: ClipRect(
  154 + child: CustomSingleChildLayout(
  155 + delegate: _GetModalBottomSheetLayout(
  156 + animationValue, widget.isScrollControlled),
  157 + child: widget.isPersistent == false ? BottomSheet(
  158 + animationController: widget.route._animationController,
  159 + onClosing: () {
  160 + if (widget.route.isCurrent) {
  161 + Navigator.pop(context);
  162 + }
  163 + },
  164 + builder: widget.route.builder,
  165 + backgroundColor: widget.backgroundColor,
  166 + elevation: widget.elevation,
  167 + shape: widget.shape,
  168 + clipBehavior: widget.clipBehavior,
  169 + enableDrag: widget.enableDrag,
  170 + ) : Scaffold(
  171 + bottomSheet: BottomSheet(
  172 + animationController: widget.route._animationController,
  173 + onClosing: () {
  174 + // if (widget.route.isCurrent) {
  175 + // Navigator.pop(context);
  176 + // }
  177 + },
  178 + builder: widget.route.builder,
  179 + backgroundColor: widget.backgroundColor,
  180 + elevation: widget.elevation,
  181 + shape: widget.shape,
  182 + clipBehavior: widget.clipBehavior,
  183 + enableDrag: widget.enableDrag,
  184 + ),
  185 + )
  186 + ),
  187 + ),
  188 + );
  189 + },
  190 + );
  191 + }
  192 +}
  193 +
  194 +class _GetPerModalBottomSheet<T> extends StatefulWidget {
  195 + const _GetPerModalBottomSheet({
  196 + Key key,
  197 + this.route,
  198 + this.isPersistent,
  199 + this.backgroundColor,
  200 + this.elevation,
  201 + this.shape,
  202 + this.clipBehavior,
  203 + this.isScrollControlled = false,
  204 + this.enableDrag = true,
  205 + }) : assert(isScrollControlled != null),
  206 + assert(enableDrag != null),
  207 + super(key: key);
  208 + final bool isPersistent;
  209 + final GetModalBottomSheetRoute<T> route;
  210 + final bool isScrollControlled;
  211 + final Color backgroundColor;
  212 + final double elevation;
  213 + final ShapeBorder shape;
  214 + final Clip clipBehavior;
  215 + final bool enableDrag;
  216 +
  217 + @override
  218 + // ignore: lines_longer_than_80_chars
  219 + _GetPerModalBottomSheetState<T> createState() =>
  220 + _GetPerModalBottomSheetState<T>();
  221 +}
  222 +
  223 +// ignore: lines_longer_than_80_chars
  224 +class _GetPerModalBottomSheetState<T>
  225 + extends State<_GetPerModalBottomSheet<T>> {
  226 + String _getRouteLabel(MaterialLocalizations localizations) {
  227 + if ((Theme.of(context).platform == TargetPlatform.android) ||
  228 + (Theme.of(context).platform == TargetPlatform.fuchsia)) {
  229 + return localizations.dialogLabel;
  230 + } else {
  231 + return '';
  232 + }
  233 + }
  234 +
  235 + @override
  236 + Widget build(BuildContext context) {
  237 + assert(debugCheckHasMediaQuery(context));
  238 + assert(debugCheckHasMaterialLocalizations(context));
  239 + final mediaQuery = MediaQuery.of(context);
  240 + final localizations = MaterialLocalizations.of(context);
  241 + final routeLabel = _getRouteLabel(localizations);
  242 +
  243 + return AnimatedBuilder(
  244 + animation: widget.route.animation,
  245 + builder: (context, child) {
  246 + // Disable the initial animation when accessible navigation is on so
  247 + // that the semantics are added to the tree at the correct time.
  248 + final animationValue = mediaQuery.accessibleNavigation
  249 + ? 1.0
  250 + : widget.route.animation.value;
145 return Semantics( 251 return Semantics(
146 scopesRoute: true, 252 scopesRoute: true,
147 namesRoute: true, 253 namesRoute: true,
@@ -151,7 +257,7 @@ class _GetModalBottomSheetState<T> extends State<_GetModalBottomSheet<T>> { @@ -151,7 +257,7 @@ class _GetModalBottomSheetState<T> extends State<_GetModalBottomSheet<T>> {
151 child: CustomSingleChildLayout( 257 child: CustomSingleChildLayout(
152 delegate: _GetModalBottomSheetLayout( 258 delegate: _GetModalBottomSheetLayout(
153 animationValue, widget.isScrollControlled), 259 animationValue, widget.isScrollControlled),
154 - child: BottomSheet( 260 + child: widget.isPersistent == false ? BottomSheet(
155 animationController: widget.route._animationController, 261 animationController: widget.route._animationController,
156 onClosing: () { 262 onClosing: () {
157 if (widget.route.isCurrent) { 263 if (widget.route.isCurrent) {
@@ -164,7 +270,22 @@ class _GetModalBottomSheetState<T> extends State<_GetModalBottomSheet<T>> { @@ -164,7 +270,22 @@ class _GetModalBottomSheetState<T> extends State<_GetModalBottomSheet<T>> {
164 shape: widget.shape, 270 shape: widget.shape,
165 clipBehavior: widget.clipBehavior, 271 clipBehavior: widget.clipBehavior,
166 enableDrag: widget.enableDrag, 272 enableDrag: widget.enableDrag,
167 - ), 273 + ) : Scaffold(
  274 + bottomSheet: BottomSheet(
  275 + animationController: widget.route._animationController,
  276 + onClosing: () {
  277 + // if (widget.route.isCurrent) {
  278 + // Navigator.pop(context);
  279 + // }
  280 + },
  281 + builder: widget.route.builder,
  282 + backgroundColor: widget.backgroundColor,
  283 + elevation: widget.elevation,
  284 + shape: widget.shape,
  285 + clipBehavior: widget.clipBehavior,
  286 + enableDrag: widget.enableDrag,
  287 + ),
  288 + )
168 ), 289 ),
169 ), 290 ),
170 ); 291 );
@@ -631,6 +631,7 @@ extension GetNavigation on GetInterface { @@ -631,6 +631,7 @@ extension GetNavigation on GetInterface {
631 Widget bottomsheet, { 631 Widget bottomsheet, {
632 Color backgroundColor, 632 Color backgroundColor,
633 double elevation, 633 double elevation,
  634 + bool persistent = true,
634 ShapeBorder shape, 635 ShapeBorder shape,
635 Clip clipBehavior, 636 Clip clipBehavior,
636 Color barrierColor, 637 Color barrierColor,
@@ -641,6 +642,7 @@ extension GetNavigation on GetInterface { @@ -641,6 +642,7 @@ extension GetNavigation on GetInterface {
641 bool enableDrag = true, 642 bool enableDrag = true,
642 }) { 643 }) {
643 assert(bottomsheet != null); 644 assert(bottomsheet != null);
  645 + assert(persistent != null);
644 assert(isScrollControlled != null); 646 assert(isScrollControlled != null);
645 assert(useRootNavigator != null); 647 assert(useRootNavigator != null);
646 assert(isDismissible != null); 648 assert(isDismissible != null);
@@ -649,6 +651,7 @@ extension GetNavigation on GetInterface { @@ -649,6 +651,7 @@ extension GetNavigation on GetInterface {
649 return Navigator.of(overlayContext, rootNavigator: useRootNavigator) 651 return Navigator.of(overlayContext, rootNavigator: useRootNavigator)
650 .push(GetModalBottomSheetRoute<T>( 652 .push(GetModalBottomSheetRoute<T>(
651 builder: (_) => bottomsheet, 653 builder: (_) => bottomsheet,
  654 + isPersistent: persistent,
652 theme: Theme.of(key.currentContext, shadowThemeOnly: true), 655 theme: Theme.of(key.currentContext, shadowThemeOnly: true),
653 isScrollControlled: isScrollControlled, 656 isScrollControlled: isScrollControlled,
654 barrierLabel: 657 barrierLabel:
@@ -589,4 +589,4 @@ class RxInt extends _BaseRxNum<int> { @@ -589,4 +589,4 @@ class RxInt extends _BaseRxNum<int> {
589 589
590 /// Returns `this.toDouble()`. 590 /// Returns `this.toDouble()`.
591 double truncateToDouble() => _value.truncateToDouble(); 591 double truncateToDouble() => _value.truncateToDouble();
592 -}  
  592 +}
@@ -7,42 +7,42 @@ packages: @@ -7,42 +7,42 @@ packages:
7 name: async 7 name: async
8 url: "https://pub.dartlang.org" 8 url: "https://pub.dartlang.org"
9 source: hosted 9 source: hosted
10 - version: "2.5.0-nullsafety" 10 + version: "2.4.2"
11 boolean_selector: 11 boolean_selector:
12 dependency: transitive 12 dependency: transitive
13 description: 13 description:
14 name: boolean_selector 14 name: boolean_selector
15 url: "https://pub.dartlang.org" 15 url: "https://pub.dartlang.org"
16 source: hosted 16 source: hosted
17 - version: "2.1.0-nullsafety" 17 + version: "2.0.0"
18 characters: 18 characters:
19 dependency: transitive 19 dependency: transitive
20 description: 20 description:
21 name: characters 21 name: characters
22 url: "https://pub.dartlang.org" 22 url: "https://pub.dartlang.org"
23 source: hosted 23 source: hosted
24 - version: "1.1.0-nullsafety.2" 24 + version: "1.0.0"
25 charcode: 25 charcode:
26 dependency: transitive 26 dependency: transitive
27 description: 27 description:
28 name: charcode 28 name: charcode
29 url: "https://pub.dartlang.org" 29 url: "https://pub.dartlang.org"
30 source: hosted 30 source: hosted
31 - version: "1.2.0-nullsafety" 31 + version: "1.1.3"
32 clock: 32 clock:
33 dependency: transitive 33 dependency: transitive
34 description: 34 description:
35 name: clock 35 name: clock
36 url: "https://pub.dartlang.org" 36 url: "https://pub.dartlang.org"
37 source: hosted 37 source: hosted
38 - version: "1.1.0-nullsafety" 38 + version: "1.0.1"
39 collection: 39 collection:
40 dependency: transitive 40 dependency: transitive
41 description: 41 description:
42 name: collection 42 name: collection
43 url: "https://pub.dartlang.org" 43 url: "https://pub.dartlang.org"
44 source: hosted 44 source: hosted
45 - version: "1.15.0-nullsafety.2" 45 + version: "1.14.13"
46 effective_dart: 46 effective_dart:
47 dependency: "direct dev" 47 dependency: "direct dev"
48 description: 48 description:
@@ -56,7 +56,7 @@ packages: @@ -56,7 +56,7 @@ packages:
56 name: fake_async 56 name: fake_async
57 url: "https://pub.dartlang.org" 57 url: "https://pub.dartlang.org"
58 source: hosted 58 source: hosted
59 - version: "1.1.0-nullsafety" 59 + version: "1.1.0"
60 flutter: 60 flutter:
61 dependency: "direct main" 61 dependency: "direct main"
62 description: flutter 62 description: flutter
@@ -73,21 +73,21 @@ packages: @@ -73,21 +73,21 @@ packages:
73 name: matcher 73 name: matcher
74 url: "https://pub.dartlang.org" 74 url: "https://pub.dartlang.org"
75 source: hosted 75 source: hosted
76 - version: "0.12.10-nullsafety" 76 + version: "0.12.8"
77 meta: 77 meta:
78 dependency: transitive 78 dependency: transitive
79 description: 79 description:
80 name: meta 80 name: meta
81 url: "https://pub.dartlang.org" 81 url: "https://pub.dartlang.org"
82 source: hosted 82 source: hosted
83 - version: "1.3.0-nullsafety.2" 83 + version: "1.1.8"
84 path: 84 path:
85 dependency: transitive 85 dependency: transitive
86 description: 86 description:
87 name: path 87 name: path
88 url: "https://pub.dartlang.org" 88 url: "https://pub.dartlang.org"
89 source: hosted 89 source: hosted
90 - version: "1.8.0-nullsafety" 90 + version: "1.7.0"
91 sky_engine: 91 sky_engine:
92 dependency: transitive 92 dependency: transitive
93 description: flutter 93 description: flutter
@@ -99,55 +99,55 @@ packages: @@ -99,55 +99,55 @@ packages:
99 name: source_span 99 name: source_span
100 url: "https://pub.dartlang.org" 100 url: "https://pub.dartlang.org"
101 source: hosted 101 source: hosted
102 - version: "1.8.0-nullsafety" 102 + version: "1.7.0"
103 stack_trace: 103 stack_trace:
104 dependency: transitive 104 dependency: transitive
105 description: 105 description:
106 name: stack_trace 106 name: stack_trace
107 url: "https://pub.dartlang.org" 107 url: "https://pub.dartlang.org"
108 source: hosted 108 source: hosted
109 - version: "1.10.0-nullsafety" 109 + version: "1.9.5"
110 stream_channel: 110 stream_channel:
111 dependency: transitive 111 dependency: transitive
112 description: 112 description:
113 name: stream_channel 113 name: stream_channel
114 url: "https://pub.dartlang.org" 114 url: "https://pub.dartlang.org"
115 source: hosted 115 source: hosted
116 - version: "2.1.0-nullsafety" 116 + version: "2.0.0"
117 string_scanner: 117 string_scanner:
118 dependency: transitive 118 dependency: transitive
119 description: 119 description:
120 name: string_scanner 120 name: string_scanner
121 url: "https://pub.dartlang.org" 121 url: "https://pub.dartlang.org"
122 source: hosted 122 source: hosted
123 - version: "1.1.0-nullsafety" 123 + version: "1.0.5"
124 term_glyph: 124 term_glyph:
125 dependency: transitive 125 dependency: transitive
126 description: 126 description:
127 name: term_glyph 127 name: term_glyph
128 url: "https://pub.dartlang.org" 128 url: "https://pub.dartlang.org"
129 source: hosted 129 source: hosted
130 - version: "1.2.0-nullsafety" 130 + version: "1.1.0"
131 test_api: 131 test_api:
132 dependency: transitive 132 dependency: transitive
133 description: 133 description:
134 name: test_api 134 name: test_api
135 url: "https://pub.dartlang.org" 135 url: "https://pub.dartlang.org"
136 source: hosted 136 source: hosted
137 - version: "0.2.19-nullsafety" 137 + version: "0.2.17"
138 typed_data: 138 typed_data:
139 dependency: transitive 139 dependency: transitive
140 description: 140 description:
141 name: typed_data 141 name: typed_data
142 url: "https://pub.dartlang.org" 142 url: "https://pub.dartlang.org"
143 source: hosted 143 source: hosted
144 - version: "1.3.0-nullsafety.2" 144 + version: "1.2.0"
145 vector_math: 145 vector_math:
146 dependency: transitive 146 dependency: transitive
147 description: 147 description:
148 name: vector_math 148 name: vector_math
149 url: "https://pub.dartlang.org" 149 url: "https://pub.dartlang.org"
150 source: hosted 150 source: hosted
151 - version: "2.1.0-nullsafety.2" 151 + version: "2.0.8"
152 sdks: 152 sdks:
153 - dart: ">=2.10.0-0.0.dev <2.10.0" 153 + dart: ">=2.9.0-14.0.dev <3.0.0"