Jonny Borges

refactor the project to follow flutter lint recommendations

Showing 81 changed files with 705 additions and 601 deletions
  1 +## [5.0.0-release-candidate]
  2 +Refactor StateManager, RouteManager and InstanceManager from scratch
  3 +Fixed Bugs
  4 +Added a Scopped DI
  5 +Api now uses Navigator 2
  6 +Added new RouteOutlet
  7 +Added a new futurize method to StateMixin, that tracks updates, errors, and states programatically,
  8 +
1 ## [4.6.1] 9 ## [4.6.1]
2 Fix GetConnect on Flutter web 10 Fix GetConnect on Flutter web
3 11
@@ -22,6 +22,8 @@ linter: @@ -22,6 +22,8 @@ linter:
22 # `// ignore_for_file: name_of_lint` syntax on the line or in the file 22 # `// ignore_for_file: name_of_lint` syntax on the line or in the file
23 # producing the lint. 23 # producing the lint.
24 rules: 24 rules:
  25 + camel_case_types: false
  26 + constant_identifier_names: false
25 # avoid_print: false # Uncomment to disable the `avoid_print` rule 27 # avoid_print: false # Uncomment to disable the `avoid_print` rule
26 # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule 28 # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
27 29
@@ -6,7 +6,7 @@ import 'pt_br.dart'; @@ -6,7 +6,7 @@ import 'pt_br.dart';
6 6
7 class TranslationService extends Translations { 7 class TranslationService extends Translations {
8 static Locale? get locale => Get.deviceLocale; 8 static Locale? get locale => Get.deviceLocale;
9 - static final fallbackLocale = Locale('en', 'US'); 9 + static const fallbackLocale = Locale('en', 'US');
10 @override 10 @override
11 Map<String, Map<String, String>> get keys => { 11 Map<String, Map<String, String>> get keys => {
12 'en_US': en_US, 12 'en_US': en_US,
@@ -6,7 +6,7 @@ import 'routes/app_pages.dart'; @@ -6,7 +6,7 @@ import 'routes/app_pages.dart';
6 import 'shared/logger/logger_utils.dart'; 6 import 'shared/logger/logger_utils.dart';
7 7
8 void main() { 8 void main() {
9 - runApp(MyApp()); 9 + runApp(const MyApp());
10 } 10 }
11 11
12 class MyApp extends StatelessWidget { 12 class MyApp extends StatelessWidget {
@@ -10,7 +10,7 @@ class CountryView extends GetView<HomeController> { @@ -10,7 +10,7 @@ class CountryView extends GetView<HomeController> {
10 @override 10 @override
11 Widget build(BuildContext context) { 11 Widget build(BuildContext context) {
12 return Container( 12 return Container(
13 - decoration: BoxDecoration( 13 + decoration: const BoxDecoration(
14 image: DecorationImage( 14 image: DecorationImage(
15 fit: BoxFit.cover, 15 fit: BoxFit.cover,
16 colorFilter: ColorFilter.linearToSrgbGamma(), 16 colorFilter: ColorFilter.linearToSrgbGamma(),
@@ -18,38 +18,36 @@ class CountryView extends GetView<HomeController> { @@ -18,38 +18,36 @@ class CountryView extends GetView<HomeController> {
18 "https://images.pexels.com/photos/3902882/pexels-photo-3902882.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940"))), 18 "https://images.pexels.com/photos/3902882/pexels-photo-3902882.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940"))),
19 child: BackdropFilter( 19 child: BackdropFilter(
20 filter: ImageFilter.blur(sigmaX: 15.0, sigmaY: 15.0), 20 filter: ImageFilter.blur(sigmaX: 15.0, sigmaY: 15.0),
21 - child: Container(  
22 - child: Scaffold( 21 + child: Scaffold(
  22 + backgroundColor: Colors.transparent,
  23 + appBar: AppBar(
  24 + title: Text('corona_by_country'.tr),
23 backgroundColor: Colors.transparent, 25 backgroundColor: Colors.transparent,
24 - appBar: AppBar(  
25 - title: Text('corona_by_country'.tr),  
26 - backgroundColor: Colors.transparent,  
27 - elevation: 0,  
28 - centerTitle: true,  
29 - ),  
30 - body: Center(  
31 - child: ListView.builder(  
32 - itemCount: controller.state.countries.length,  
33 - itemBuilder: (context, index) {  
34 - final country = controller.state.countries[index];  
35 - return ListTile(  
36 - onTap: () async {  
37 - //Get.rootDelegate.toNamed('/home/country');  
38 - final data = await Get.toNamed(  
39 - '/home/country/details?id=$index');  
40 - print(data);  
41 - },  
42 - trailing: CircleAvatar(  
43 - backgroundImage: NetworkImage(  
44 - "https://flagpedia.net/data/flags/normal/${country.countryCode.toLowerCase()}.png"),  
45 - ),  
46 - title: Text(country.country),  
47 - subtitle: Text(  
48 - // ignore: lines_longer_than_80_chars  
49 - '${'total_infecteds'.tr}${' ${country.totalConfirmed}'}'),  
50 - );  
51 - }),  
52 - ), 26 + elevation: 0,
  27 + centerTitle: true,
  28 + ),
  29 + body: Center(
  30 + child: ListView.builder(
  31 + itemCount: controller.state.countries.length,
  32 + itemBuilder: (context, index) {
  33 + final country = controller.state.countries[index];
  34 + return ListTile(
  35 + onTap: () async {
  36 + //Get.rootDelegate.toNamed('/home/country');
  37 + final data =
  38 + await Get.toNamed('/home/country/details?id=$index');
  39 + Get.log(data);
  40 + },
  41 + trailing: CircleAvatar(
  42 + backgroundImage: NetworkImage(
  43 + "https://flagpedia.net/data/flags/normal/${country.countryCode.toLowerCase()}.png"),
  44 + ),
  45 + title: Text(country.country),
  46 + subtitle: Text(
  47 + // ignore: lines_longer_than_80_chars
  48 + '${'total_infecteds'.tr}${' ${country.totalConfirmed}'}'),
  49 + );
  50 + }),
53 ), 51 ),
54 ), 52 ),
55 ), 53 ),
@@ -15,77 +15,79 @@ class DetailsView extends GetView<HomeController> { @@ -15,77 +15,79 @@ class DetailsView extends GetView<HomeController> {
15 decoration: BoxDecoration( 15 decoration: BoxDecoration(
16 image: DecorationImage( 16 image: DecorationImage(
17 fit: BoxFit.cover, 17 fit: BoxFit.cover,
18 - colorFilter: ColorFilter.linearToSrgbGamma(), 18 + colorFilter: const ColorFilter.linearToSrgbGamma(),
19 image: NetworkImage( 19 image: NetworkImage(
20 "https://flagpedia.net/data/flags/normal/${country.countryCode.toLowerCase()}.png"), 20 "https://flagpedia.net/data/flags/normal/${country.countryCode.toLowerCase()}.png"),
21 ), 21 ),
22 ), 22 ),
23 child: BackdropFilter( 23 child: BackdropFilter(
24 filter: ImageFilter.blur(sigmaX: 15.0, sigmaY: 15.0), 24 filter: ImageFilter.blur(sigmaX: 15.0, sigmaY: 15.0),
25 - child: Container(  
26 - child: Scaffold(  
27 - backgroundColor: Colors.transparent,  
28 - appBar: AppBar(  
29 - title: Text('details'.tr),  
30 - backgroundColor: Colors.black12,  
31 - elevation: 0,  
32 - centerTitle: true,  
33 - ),  
34 - body: Center(  
35 - child: Column(  
36 - mainAxisAlignment: MainAxisAlignment.center,  
37 - children: [  
38 - Text(  
39 - '${country.country}',  
40 - style: TextStyle(fontSize: 45, fontWeight: FontWeight.bold),  
41 - ),  
42 - SizedBox(  
43 - height: 35,  
44 - ),  
45 - Text(  
46 - 'total_confirmed'.tr,  
47 - style: TextStyle(  
48 - fontSize: 25,  
49 - ),  
50 - ),  
51 - Text(  
52 - '${country.totalConfirmed}',  
53 - style: TextStyle(fontSize: 35, fontWeight: FontWeight.bold),  
54 - ),  
55 - SizedBox(  
56 - height: 10,  
57 - ),  
58 - Text(  
59 - 'total_deaths'.tr,  
60 - style: TextStyle(  
61 - fontSize: 25,  
62 - ),  
63 - ),  
64 - Text(  
65 - '${country.totalDeaths}',  
66 - style: TextStyle(fontSize: 35, fontWeight: FontWeight.bold),  
67 - ),  
68 - SizedBox(  
69 - height: 10, 25 + child: Scaffold(
  26 + backgroundColor: Colors.transparent,
  27 + appBar: AppBar(
  28 + title: Text('details'.tr),
  29 + backgroundColor: Colors.black12,
  30 + elevation: 0,
  31 + centerTitle: true,
  32 + ),
  33 + body: Center(
  34 + child: Column(
  35 + mainAxisAlignment: MainAxisAlignment.center,
  36 + children: [
  37 + Text(
  38 + country.country,
  39 + style:
  40 + const TextStyle(fontSize: 45, fontWeight: FontWeight.bold),
  41 + ),
  42 + const SizedBox(
  43 + height: 35,
  44 + ),
  45 + Text(
  46 + 'total_confirmed'.tr,
  47 + style: const TextStyle(
  48 + fontSize: 25,
70 ), 49 ),
71 - Text(  
72 - 'total_recovered'.tr,  
73 - style: TextStyle(  
74 - fontSize: 25,  
75 - ), 50 + ),
  51 + Text(
  52 + '${country.totalConfirmed}',
  53 + style:
  54 + const TextStyle(fontSize: 35, fontWeight: FontWeight.bold),
  55 + ),
  56 + const SizedBox(
  57 + height: 10,
  58 + ),
  59 + Text(
  60 + 'total_deaths'.tr,
  61 + style: const TextStyle(
  62 + fontSize: 25,
76 ), 63 ),
77 - Text(  
78 - '${country.totalRecovered}',  
79 - style: TextStyle(fontSize: 35, fontWeight: FontWeight.bold), 64 + ),
  65 + Text(
  66 + '${country.totalDeaths}',
  67 + style:
  68 + const TextStyle(fontSize: 35, fontWeight: FontWeight.bold),
  69 + ),
  70 + const SizedBox(
  71 + height: 10,
  72 + ),
  73 + Text(
  74 + 'total_recovered'.tr,
  75 + style: const TextStyle(
  76 + fontSize: 25,
80 ), 77 ),
81 - TextButton(  
82 - onPressed: () {  
83 - Get.back(result: 'djsoidjsoidj');  
84 - },  
85 - child: Text('back'))  
86 - ],  
87 - )),  
88 - ), 78 + ),
  79 + Text(
  80 + '${country.totalRecovered}',
  81 + style:
  82 + const TextStyle(fontSize: 35, fontWeight: FontWeight.bold),
  83 + ),
  84 + TextButton(
  85 + onPressed: () {
  86 + Get.back(result: 'djsoidjsoidj');
  87 + },
  88 + child: const Text('back'))
  89 + ],
  90 + )),
89 ), 91 ),
90 ), 92 ),
91 ); 93 );
@@ -9,7 +9,7 @@ class HomeView extends GetView<HomeController> { @@ -9,7 +9,7 @@ class HomeView extends GetView<HomeController> {
9 @override 9 @override
10 Widget build(BuildContext context) { 10 Widget build(BuildContext context) {
11 return Container( 11 return Container(
12 - decoration: BoxDecoration( 12 + decoration: const BoxDecoration(
13 color: Colors.white, 13 color: Colors.white,
14 image: DecorationImage( 14 image: DecorationImage(
15 fit: BoxFit.cover, 15 fit: BoxFit.cover,
@@ -22,7 +22,7 @@ class HomeView extends GetView<HomeController> { @@ -22,7 +22,7 @@ class HomeView extends GetView<HomeController> {
22 backgroundColor: Colors.transparent, 22 backgroundColor: Colors.transparent,
23 appBar: AppBar( 23 appBar: AppBar(
24 leading: IconButton( 24 leading: IconButton(
25 - icon: Icon(Icons.add), 25 + icon: const Icon(Icons.add),
26 onPressed: () { 26 onPressed: () {
27 Get.snackbar('title', 'message'); 27 Get.snackbar('title', 'message');
28 }, 28 },
@@ -38,43 +38,45 @@ class HomeView extends GetView<HomeController> { @@ -38,43 +38,45 @@ class HomeView extends GetView<HomeController> {
38 return Column( 38 return Column(
39 mainAxisAlignment: MainAxisAlignment.center, 39 mainAxisAlignment: MainAxisAlignment.center,
40 children: [ 40 children: [
41 - SizedBox( 41 + const SizedBox(
42 height: 100, 42 height: 100,
43 ), 43 ),
44 Text( 44 Text(
45 'total_confirmed'.tr, 45 'total_confirmed'.tr,
46 - style: TextStyle( 46 + style: const TextStyle(
47 fontSize: 30, 47 fontSize: 30,
48 ), 48 ),
49 ), 49 ),
50 Text( 50 Text(
51 '${state!.global.totalConfirmed}', 51 '${state!.global.totalConfirmed}',
52 - style: TextStyle(fontSize: 45, fontWeight: FontWeight.bold), 52 + style: const TextStyle(
  53 + fontSize: 45, fontWeight: FontWeight.bold),
53 ), 54 ),
54 - SizedBox( 55 + const SizedBox(
55 height: 10, 56 height: 10,
56 ), 57 ),
57 Text( 58 Text(
58 'total_deaths'.tr, 59 'total_deaths'.tr,
59 - style: TextStyle( 60 + style: const TextStyle(
60 fontSize: 30, 61 fontSize: 30,
61 ), 62 ),
62 ), 63 ),
63 Text( 64 Text(
64 '${state.global.totalDeaths}', 65 '${state.global.totalDeaths}',
65 - style: TextStyle(fontSize: 45, fontWeight: FontWeight.bold), 66 + style: const TextStyle(
  67 + fontSize: 45, fontWeight: FontWeight.bold),
66 ), 68 ),
67 - SizedBox( 69 + const SizedBox(
68 height: 10, 70 height: 10,
69 ), 71 ),
70 OutlinedButton( 72 OutlinedButton(
71 style: OutlinedButton.styleFrom( 73 style: OutlinedButton.styleFrom(
72 - textStyle: TextStyle(color: Colors.black),  
73 - side: BorderSide( 74 + textStyle: const TextStyle(color: Colors.black),
  75 + side: const BorderSide(
74 color: Colors.deepPurple, 76 color: Colors.deepPurple,
75 width: 3, 77 width: 3,
76 ), 78 ),
77 - shape: StadiumBorder(), 79 + shape: const StadiumBorder(),
78 ), 80 ),
79 onPressed: () async { 81 onPressed: () async {
80 //await Navigation Get.rootDelegate.toNamed('/home/country'); 82 //await Navigation Get.rootDelegate.toNamed('/home/country');
@@ -82,7 +84,7 @@ class HomeView extends GetView<HomeController> { @@ -82,7 +84,7 @@ class HomeView extends GetView<HomeController> {
82 }, 84 },
83 child: Text( 85 child: Text(
84 'fetch_country'.tr, 86 'fetch_country'.tr,
85 - style: TextStyle( 87 + style: const TextStyle(
86 fontWeight: FontWeight.bold, 88 fontWeight: FontWeight.bold,
87 color: Colors.black, 89 color: Colors.black,
88 ), 90 ),
@@ -90,17 +92,17 @@ class HomeView extends GetView<HomeController> { @@ -90,17 +92,17 @@ class HomeView extends GetView<HomeController> {
90 ), 92 ),
91 OutlinedButton( 93 OutlinedButton(
92 style: OutlinedButton.styleFrom( 94 style: OutlinedButton.styleFrom(
93 - textStyle: TextStyle(color: Colors.black),  
94 - side: BorderSide( 95 + textStyle: const TextStyle(color: Colors.black),
  96 + side: const BorderSide(
95 color: Colors.deepPurple, 97 color: Colors.deepPurple,
96 width: 3, 98 width: 3,
97 ), 99 ),
98 - shape: StadiumBorder(), 100 + shape: const StadiumBorder(),
99 ), 101 ),
100 onPressed: () { 102 onPressed: () {
101 - Get.updateLocale(Locale('pt', 'BR')); 103 + Get.updateLocale(const Locale('pt', 'BR'));
102 }, 104 },
103 - child: Text( 105 + child: const Text(
104 'Update language to Portuguese', 106 'Update language to Portuguese',
105 style: TextStyle( 107 style: TextStyle(
106 fontWeight: FontWeight.bold, 108 fontWeight: FontWeight.bold,
@@ -14,16 +14,16 @@ class AppPages { @@ -14,16 +14,16 @@ class AppPages {
14 static final routes = [ 14 static final routes = [
15 GetPage( 15 GetPage(
16 name: Routes.HOME, 16 name: Routes.HOME,
17 - page: () => HomeView(), 17 + page: () => const HomeView(),
18 binding: HomeBinding(), 18 binding: HomeBinding(),
19 children: [ 19 children: [
20 GetPage( 20 GetPage(
21 name: Routes.COUNTRY, 21 name: Routes.COUNTRY,
22 - page: () => CountryView(), 22 + page: () => const CountryView(),
23 children: [ 23 children: [
24 GetPage( 24 GetPage(
25 name: Routes.DETAILS, 25 name: Routes.DETAILS,
26 - page: () => DetailsView(), 26 + page: () => const DetailsView(),
27 ), 27 ),
28 ], 28 ],
29 ), 29 ),
1 mixin Logger { 1 mixin Logger {
2 // Sample of abstract logging function 2 // Sample of abstract logging function
3 static void write(String text, {bool isError = false}) { 3 static void write(String text, {bool isError = false}) {
  4 + // ignore: avoid_print
4 Future.microtask(() => print('** $text. isError: [$isError]')); 5 Future.microtask(() => print('** $text. isError: [$isError]'));
5 } 6 }
6 } 7 }
@@ -3,13 +3,11 @@ import 'dart:io'; @@ -3,13 +3,11 @@ import 'dart:io';
3 import 'package:flutter/material.dart'; 3 import 'package:flutter/material.dart';
4 import 'package:flutter_test/flutter_test.dart'; 4 import 'package:flutter_test/flutter_test.dart';
5 import 'package:get/get.dart'; 5 import 'package:get/get.dart';
  6 +import 'package:get_demo/pages/home/domain/adapters/repository_adapter.dart';
  7 +import 'package:get_demo/pages/home/domain/entity/cases_model.dart';
  8 +import 'package:get_demo/pages/home/presentation/controllers/home_controller.dart';
6 // import 'package:get_demo/routes/app_pages.dart'; 9 // import 'package:get_demo/routes/app_pages.dart';
7 // import 'package:get_test/get_test.dart'; 10 // import 'package:get_test/get_test.dart';
8 -import 'package:matcher/matcher.dart' as m;  
9 -  
10 -import '../lib/pages/home/domain/adapters/repository_adapter.dart';  
11 -import '../lib/pages/home/domain/entity/cases_model.dart';  
12 -import '../lib/pages/home/presentation/controllers/home_controller.dart';  
13 11
14 class MockRepositorySuccess implements IHomeRepository { 12 class MockRepositorySuccess implements IHomeRepository {
15 @override 13 @override
@@ -57,7 +55,7 @@ void main() { @@ -57,7 +55,7 @@ void main() {
57 test('Test Controller', () async { 55 test('Test Controller', () async {
58 /// Controller can't be on memory 56 /// Controller can't be on memory
59 expect(() => Get.find<HomeController>(tag: 'success'), 57 expect(() => Get.find<HomeController>(tag: 'success'),
60 - throwsA(m.TypeMatcher<String>())); 58 + throwsA(const TypeMatcher<String>()));
61 59
62 /// binding will put the controller on memory 60 /// binding will put the controller on memory
63 binding.dependencies(); 61 binding.dependencies();
@@ -72,7 +70,7 @@ void main() { @@ -72,7 +70,7 @@ void main() {
72 expect(controller.status.isLoading, true); 70 expect(controller.status.isLoading, true);
73 71
74 /// await time request 72 /// await time request
75 - await Future.delayed(Duration(milliseconds: 100)); 73 + await Future.delayed(const Duration(milliseconds: 100));
76 74
77 /// test if status is success 75 /// test if status is success
78 expect(controller.status.isSuccess, true); 76 expect(controller.status.isSuccess, true);
@@ -8,7 +8,7 @@ class DashboardController extends GetxController { @@ -8,7 +8,7 @@ class DashboardController extends GetxController {
8 void onReady() { 8 void onReady() {
9 super.onReady(); 9 super.onReady();
10 Timer.periodic( 10 Timer.periodic(
11 - Duration(seconds: 1), 11 + const Duration(seconds: 1),
12 (timer) { 12 (timer) {
13 now.value = DateTime.now(); 13 now.value = DateTime.now();
14 }, 14 },
@@ -4,6 +4,8 @@ import 'package:get/get.dart'; @@ -4,6 +4,8 @@ import 'package:get/get.dart';
4 import '../controllers/dashboard_controller.dart'; 4 import '../controllers/dashboard_controller.dart';
5 5
6 class DashboardView extends GetView<DashboardController> { 6 class DashboardView extends GetView<DashboardController> {
  7 + const DashboardView({super.key});
  8 +
7 @override 9 @override
8 Widget build(BuildContext context) { 10 Widget build(BuildContext context) {
9 return Scaffold( 11 return Scaffold(
@@ -12,7 +14,7 @@ class DashboardView extends GetView<DashboardController> { @@ -12,7 +14,7 @@ class DashboardView extends GetView<DashboardController> {
12 () => Column( 14 () => Column(
13 mainAxisSize: MainAxisSize.min, 15 mainAxisSize: MainAxisSize.min,
14 children: [ 16 children: [
15 - Text( 17 + const Text(
16 'DashboardView is working', 18 'DashboardView is working',
17 style: TextStyle(fontSize: 20), 19 style: TextStyle(fontSize: 20),
18 ), 20 ),
@@ -14,7 +14,6 @@ class HomeView extends GetView<HomeController> { @@ -14,7 +14,6 @@ class HomeView extends GetView<HomeController> {
14 final delegate = context.navigation; 14 final delegate = context.navigation;
15 //This router outlet handles the appbar and the bottom navigation bar 15 //This router outlet handles the appbar and the bottom navigation bar
16 final currentLocation = context.location; 16 final currentLocation = context.location;
17 - print(currentLocation);  
18 var currentIndex = 0; 17 var currentIndex = 0;
19 if (currentLocation.startsWith(Routes.products) == true) { 18 if (currentLocation.startsWith(Routes.products) == true) {
20 currentIndex = 2; 19 currentIndex = 2;
@@ -46,7 +45,7 @@ class HomeView extends GetView<HomeController> { @@ -46,7 +45,7 @@ class HomeView extends GetView<HomeController> {
46 default: 45 default:
47 } 46 }
48 }, 47 },
49 - items: [ 48 + items: const [
50 // _Paths.HOME + [Empty] 49 // _Paths.HOME + [Empty]
51 BottomNavigationBarItem( 50 BottomNavigationBarItem(
52 icon: Icon(Icons.home), 51 icon: Icon(Icons.home),
@@ -6,6 +6,8 @@ import '../../../routes/app_pages.dart'; @@ -6,6 +6,8 @@ import '../../../routes/app_pages.dart';
6 import '../controllers/login_controller.dart'; 6 import '../controllers/login_controller.dart';
7 7
8 class LoginView extends GetView<LoginController> { 8 class LoginView extends GetView<LoginController> {
  9 + const LoginView({super.key});
  10 +
9 @override 11 @override
10 Widget build(BuildContext context) { 12 Widget build(BuildContext context) {
11 return Scaffold( 13 return Scaffold(
@@ -25,7 +27,7 @@ class LoginView extends GetView<LoginController> { @@ -25,7 +27,7 @@ class LoginView extends GetView<LoginController> {
25 }, 27 },
26 ), 28 ),
27 MaterialButton( 29 MaterialButton(
28 - child: Text( 30 + child: const Text(
29 'Do LOGIN !!', 31 'Do LOGIN !!',
30 style: TextStyle(color: Colors.blue, fontSize: 20), 32 style: TextStyle(color: Colors.blue, fontSize: 20),
31 ), 33 ),
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 -  
3 import 'package:get/get.dart'; 2 import 'package:get/get.dart';
4 3
5 import '../controllers/product_details_controller.dart'; 4 import '../controllers/product_details_controller.dart';
6 5
7 class ProductDetailsView extends GetWidget<ProductDetailsController> { 6 class ProductDetailsView extends GetWidget<ProductDetailsController> {
  7 + const ProductDetailsView({super.key});
  8 +
8 @override 9 @override
9 Widget build(BuildContext context) { 10 Widget build(BuildContext context) {
10 return Scaffold( 11 return Scaffold(
@@ -12,7 +13,7 @@ class ProductDetailsView extends GetWidget<ProductDetailsController> { @@ -12,7 +13,7 @@ class ProductDetailsView extends GetWidget<ProductDetailsController> {
12 child: Column( 13 child: Column(
13 mainAxisSize: MainAxisSize.min, 14 mainAxisSize: MainAxisSize.min,
14 children: [ 15 children: [
15 - Text( 16 + const Text(
16 'ProductDetailsView is working', 17 'ProductDetailsView is working',
17 style: TextStyle(fontSize: 20), 18 style: TextStyle(fontSize: 20),
18 ), 19 ),
@@ -11,13 +11,13 @@ class ProductsView extends GetView<ProductsController> { @@ -11,13 +11,13 @@ class ProductsView extends GetView<ProductsController> {
11 return Scaffold( 11 return Scaffold(
12 floatingActionButton: FloatingActionButton.extended( 12 floatingActionButton: FloatingActionButton.extended(
13 onPressed: () => controller.loadDemoProductsFromSomeWhere(), 13 onPressed: () => controller.loadDemoProductsFromSomeWhere(),
14 - label: Text('Add'), 14 + label: const Text('Add'),
15 ), 15 ),
16 body: Column( 16 body: Column(
17 children: [ 17 children: [
18 - Hero( 18 + const Hero(
19 tag: 'heroLogo', 19 tag: 'heroLogo',
20 - child: const FlutterLogo(), 20 + child: FlutterLogo(),
21 ), 21 ),
22 Expanded( 22 Expanded(
23 child: Obx( 23 child: Obx(
@@ -5,6 +5,8 @@ import '../../../routes/app_pages.dart'; @@ -5,6 +5,8 @@ import '../../../routes/app_pages.dart';
5 import '../controllers/profile_controller.dart'; 5 import '../controllers/profile_controller.dart';
6 6
7 class ProfileView extends GetView<ProfileController> { 7 class ProfileView extends GetView<ProfileController> {
  8 + const ProfileView({super.key});
  9 +
8 @override 10 @override
9 Widget build(BuildContext context) { 11 Widget build(BuildContext context) {
10 return Scaffold( 12 return Scaffold(
@@ -13,16 +15,16 @@ class ProfileView extends GetView<ProfileController> { @@ -13,16 +15,16 @@ class ProfileView extends GetView<ProfileController> {
13 child: Column( 15 child: Column(
14 mainAxisSize: MainAxisSize.min, 16 mainAxisSize: MainAxisSize.min,
15 children: [ 17 children: [
16 - Text( 18 + const Text(
17 'ProfileView is working', 19 'ProfileView is working',
18 style: TextStyle(fontSize: 20), 20 style: TextStyle(fontSize: 20),
19 ), 21 ),
20 - Hero( 22 + const Hero(
21 tag: 'heroLogo', 23 tag: 'heroLogo',
22 - child: const FlutterLogo(), 24 + child: FlutterLogo(),
23 ), 25 ),
24 MaterialButton( 26 MaterialButton(
25 - child: Text('Show a test dialog'), 27 + child: const Text('Show a test dialog'),
26 onPressed: () { 28 onPressed: () {
27 //shows a dialog 29 //shows a dialog
28 Get.defaultDialog( 30 Get.defaultDialog(
@@ -32,7 +34,7 @@ class ProfileView extends GetView<ProfileController> { @@ -32,7 +34,7 @@ class ProfileView extends GetView<ProfileController> {
32 }, 34 },
33 ), 35 ),
34 MaterialButton( 36 MaterialButton(
35 - child: Text('Show a test dialog in Home router outlet'), 37 + child: const Text('Show a test dialog in Home router outlet'),
36 onPressed: () { 38 onPressed: () {
37 //shows a dialog 39 //shows a dialog
38 40
@@ -19,7 +19,7 @@ class DrawerWidget extends StatelessWidget { @@ -19,7 +19,7 @@ class DrawerWidget extends StatelessWidget {
19 color: Colors.red, 19 color: Colors.red,
20 ), 20 ),
21 ListTile( 21 ListTile(
22 - title: Text('Home'), 22 + title: const Text('Home'),
23 onTap: () { 23 onTap: () {
24 Get.toNamed(Routes.home); 24 Get.toNamed(Routes.home);
25 //to close the drawer 25 //to close the drawer
@@ -28,7 +28,7 @@ class DrawerWidget extends StatelessWidget { @@ -28,7 +28,7 @@ class DrawerWidget extends StatelessWidget {
28 }, 28 },
29 ), 29 ),
30 ListTile( 30 ListTile(
31 - title: Text('Settings'), 31 + title: const Text('Settings'),
32 onTap: () { 32 onTap: () {
33 Get.toNamed(Routes.settings); 33 Get.toNamed(Routes.settings);
34 //to close the drawer 34 //to close the drawer
@@ -38,7 +38,7 @@ class DrawerWidget extends StatelessWidget { @@ -38,7 +38,7 @@ class DrawerWidget extends StatelessWidget {
38 ), 38 ),
39 if (AuthService.to.isLoggedInValue) 39 if (AuthService.to.isLoggedInValue)
40 ListTile( 40 ListTile(
41 - title: Text( 41 + title: const Text(
42 'Logout', 42 'Logout',
43 style: TextStyle( 43 style: TextStyle(
44 color: Colors.red, 44 color: Colors.red,
@@ -54,7 +54,7 @@ class DrawerWidget extends StatelessWidget { @@ -54,7 +54,7 @@ class DrawerWidget extends StatelessWidget {
54 ), 54 ),
55 if (!AuthService.to.isLoggedInValue) 55 if (!AuthService.to.isLoggedInValue)
56 ListTile( 56 ListTile(
57 - title: Text( 57 + title: const Text(
58 'Login', 58 'Login',
59 style: TextStyle( 59 style: TextStyle(
60 color: Colors.blue, 60 color: Colors.blue,
@@ -6,6 +6,8 @@ import '../controllers/root_controller.dart'; @@ -6,6 +6,8 @@ import '../controllers/root_controller.dart';
6 import 'drawer.dart'; 6 import 'drawer.dart';
7 7
8 class RootView extends GetView<RootController> { 8 class RootView extends GetView<RootController> {
  9 + const RootView({super.key});
  10 +
9 @override 11 @override
10 Widget build(BuildContext context) { 12 Widget build(BuildContext context) {
11 return RouterOutlet.builder( 13 return RouterOutlet.builder(
@@ -13,7 +15,7 @@ class RootView extends GetView<RootController> { @@ -13,7 +15,7 @@ class RootView extends GetView<RootController> {
13 builder: (context) { 15 builder: (context) {
14 final title = context.location; 16 final title = context.location;
15 return Scaffold( 17 return Scaffold(
16 - drawer: DrawerWidget(), 18 + drawer: const DrawerWidget(),
17 appBar: AppBar( 19 appBar: AppBar(
18 title: Text(title), 20 title: Text(title),
19 centerTitle: true, 21 centerTitle: true,
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 -  
3 import 'package:get/get.dart'; 2 import 'package:get/get.dart';
4 3
5 import '../controllers/settings_controller.dart'; 4 import '../controllers/settings_controller.dart';
6 5
7 class SettingsView extends GetView<SettingsController> { 6 class SettingsView extends GetView<SettingsController> {
  7 + const SettingsView({super.key});
  8 +
8 @override 9 @override
9 Widget build(BuildContext context) { 10 Widget build(BuildContext context) {
10 - return Scaffold( 11 + return const Scaffold(
11 body: Center( 12 body: Center(
12 child: Text( 13 child: Text(
13 'SettingsView is working', 14 'SettingsView is working',
@@ -18,11 +18,11 @@ class SplashService extends GetxService { @@ -18,11 +18,11 @@ class SplashService extends GetxService {
18 18
19 Future<void> _initFunction() async { 19 Future<void> _initFunction() async {
20 final t = Timer.periodic( 20 final t = Timer.periodic(
21 - Duration(milliseconds: 500), 21 + const Duration(milliseconds: 500),
22 (t) => _changeActiveString(), 22 (t) => _changeActiveString(),
23 ); 23 );
24 //simulate some long running operation 24 //simulate some long running operation
25 - await Future.delayed(Duration(seconds: 5)); 25 + await Future.delayed(const Duration(seconds: 5));
26 //cancel the timer once we are done 26 //cancel the timer once we are done
27 t.cancel(); 27 t.cancel();
28 } 28 }
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 -  
3 import 'package:get/get.dart'; 2 import 'package:get/get.dart';
4 3
5 import '../controllers/splash_service.dart'; 4 import '../controllers/splash_service.dart';
6 5
7 class SplashView extends GetView<SplashService> { 6 class SplashView extends GetView<SplashService> {
  7 + const SplashView({super.key});
  8 +
8 @override 9 @override
9 Widget build(BuildContext context) { 10 Widget build(BuildContext context) {
10 return Scaffold( 11 return Scaffold(
@@ -15,10 +16,10 @@ class SplashView extends GetView<SplashService> { @@ -15,10 +16,10 @@ class SplashView extends GetView<SplashService> {
15 Obx( 16 Obx(
16 () => Text( 17 () => Text(
17 controller.welcomeStr[controller.activeStr.value], 18 controller.welcomeStr[controller.activeStr.value],
18 - style: TextStyle(fontSize: 20), 19 + style: const TextStyle(fontSize: 20),
19 ), 20 ),
20 ), 21 ),
21 - CircularProgressIndicator(), 22 + const CircularProgressIndicator(),
22 ], 23 ],
23 ), 24 ),
24 ), 25 ),
@@ -28,7 +28,7 @@ class AppPages { @@ -28,7 +28,7 @@ class AppPages {
28 static final routes = [ 28 static final routes = [
29 GetPage( 29 GetPage(
30 name: '/', 30 name: '/',
31 - page: () => RootView(), 31 + page: () => const RootView(),
32 bindings: [RootBinding()], 32 bindings: [RootBinding()],
33 participatesInRootNavigator: true, 33 participatesInRootNavigator: true,
34 preventDuplicates: true, 34 preventDuplicates: true,
@@ -39,7 +39,7 @@ class AppPages { @@ -39,7 +39,7 @@ class AppPages {
39 EnsureNotAuthedMiddleware(), 39 EnsureNotAuthedMiddleware(),
40 ], 40 ],
41 name: _Paths.login, 41 name: _Paths.login,
42 - page: () => LoginView(), 42 + page: () => const LoginView(),
43 bindings: [LoginBinding()], 43 bindings: [LoginBinding()],
44 ), 44 ),
45 GetPage( 45 GetPage(
@@ -53,7 +53,7 @@ class AppPages { @@ -53,7 +53,7 @@ class AppPages {
53 children: [ 53 children: [
54 GetPage( 54 GetPage(
55 name: _Paths.dashboard, 55 name: _Paths.dashboard,
56 - page: () => DashboardView(), 56 + page: () => const DashboardView(),
57 bindings: [ 57 bindings: [
58 DashboardBinding(), 58 DashboardBinding(),
59 ], 59 ],
@@ -64,7 +64,7 @@ class AppPages { @@ -64,7 +64,7 @@ class AppPages {
64 EnsureAuthMiddleware(), 64 EnsureAuthMiddleware(),
65 ], 65 ],
66 name: _Paths.profile, 66 name: _Paths.profile,
67 - page: () => ProfileView(), 67 + page: () => const ProfileView(),
68 title: 'Profile', 68 title: 'Profile',
69 transition: Transition.size, 69 transition: Transition.size,
70 bindings: [ProfileBinding()], 70 bindings: [ProfileBinding()],
@@ -82,8 +82,8 @@ class AppPages { @@ -82,8 +82,8 @@ class AppPages {
82 name: _Paths.productDetails, 82 name: _Paths.productDetails,
83 transition: Transition.cupertino, 83 transition: Transition.cupertino,
84 showCupertinoParallax: true, 84 showCupertinoParallax: true,
85 - page: () => ProductDetailsView(),  
86 - bindings: [], 85 + page: () => const ProductDetailsView(),
  86 + bindings: const [],
87 middlewares: [ 87 middlewares: [
88 //only enter this route when authed 88 //only enter this route when authed
89 EnsureAuthMiddleware(), 89 EnsureAuthMiddleware(),
@@ -95,7 +95,7 @@ class AppPages { @@ -95,7 +95,7 @@ class AppPages {
95 ), 95 ),
96 GetPage( 96 GetPage(
97 name: _Paths.settings, 97 name: _Paths.settings,
98 - page: () => SettingsView(), 98 + page: () => const SettingsView(),
99 bindings: [ 99 bindings: [
100 SettingsBinding(), 100 SettingsBinding(),
101 ], 101 ],
@@ -268,9 +268,9 @@ class GetConnect extends GetConnectInterface { @@ -268,9 +268,9 @@ class GetConnect extends GetConnectInterface {
268 }) { 268 }) {
269 _checkIfDisposed(isHttp: false); 269 _checkIfDisposed(isHttp: false);
270 270
271 - final _socket = GetSocket(_concatUrl(url)!, ping: ping);  
272 - sockets.add(_socket);  
273 - return _socket; 271 + final newSocket = GetSocket(_concatUrl(url)!, ping: ping);
  272 + sockets.add(newSocket);
  273 + return newSocket;
274 } 274 }
275 275
276 String? _concatUrl(String? url) { 276 String? _concatUrl(String? url) {
@@ -4,7 +4,8 @@ List<int> fileToBytes(dynamic data) { @@ -4,7 +4,8 @@ List<int> fileToBytes(dynamic data) {
4 if (data is List<int>) { 4 if (data is List<int>) {
5 return data; 5 return data;
6 } else { 6 } else {
7 - throw FormatException('File is not "File" or "String" or "List<int>"'); 7 + throw const FormatException(
  8 + 'File is not "File" or "String" or "List<int>"');
8 } 9 }
9 } 10 }
10 11
@@ -12,7 +12,8 @@ List<int> fileToBytes(dynamic data) { @@ -12,7 +12,8 @@ List<int> fileToBytes(dynamic data) {
12 } else if (data is List<int>) { 12 } else if (data is List<int>) {
13 return data; 13 return data;
14 } else { 14 } else {
15 - throw FormatException('File is not "File" or "String" or "List<int>"'); 15 + throw const FormatException(
  16 + 'File is not "File" or "String" or "List<int>"');
16 } 17 }
17 } 18 }
18 19
@@ -25,9 +25,9 @@ class FormData { @@ -25,9 +25,9 @@ class FormData {
25 static const int _maxBoundaryLength = 70; 25 static const int _maxBoundaryLength = 70;
26 26
27 static String _getBoundary() { 27 static String _getBoundary() {
28 - final _random = Random(); 28 + final newRandom = Random();
29 var list = List<int>.generate(_maxBoundaryLength - GET_BOUNDARY.length, 29 var list = List<int>.generate(_maxBoundaryLength - GET_BOUNDARY.length,
30 - (_) => boundaryCharacters[_random.nextInt(boundaryCharacters.length)], 30 + (_) => boundaryCharacters[newRandom.nextInt(boundaryCharacters.length)],
31 growable: false); 31 growable: false);
32 return '$GET_BOUNDARY${String.fromCharCodes(list)}'; 32 return '$GET_BOUNDARY${String.fromCharCodes(list)}';
33 } 33 }
@@ -161,11 +161,11 @@ extension Inst on GetInterface { @@ -161,11 +161,11 @@ extension Inst on GetInterface {
161 161
162 _InstanceBuilderFactory<S>? dep; 162 _InstanceBuilderFactory<S>? dep;
163 if (_singl.containsKey(key)) { 163 if (_singl.containsKey(key)) {
164 - final _dep = _singl[key];  
165 - if (_dep == null || !_dep.isDirty) { 164 + final newDep = _singl[key];
  165 + if (newDep == null || !newDep.isDirty) {
166 return; 166 return;
167 } else { 167 } else {
168 - dep = _dep as _InstanceBuilderFactory<S>; 168 + dep = newDep as _InstanceBuilderFactory<S>;
169 } 169 }
170 } 170 }
171 _singl[key] = _InstanceBuilderFactory<S>( 171 _singl[key] = _InstanceBuilderFactory<S>(
@@ -44,7 +44,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> { @@ -44,7 +44,7 @@ class GetModalBottomSheetRoute<T> extends PopupRoute<T> {
44 final bool removeTop; 44 final bool removeTop;
45 45
46 @override 46 @override
47 - Duration get transitionDuration => Duration(milliseconds: 700); 47 + Duration get transitionDuration => const Duration(milliseconds: 700);
48 48
49 @override 49 @override
50 bool get barrierDismissible => isDismissible; 50 bool get barrierDismissible => isDismissible;
@@ -51,9 +51,9 @@ class GetDialogRoute<T> extends PopupRoute<T> { @@ -51,9 +51,9 @@ class GetDialogRoute<T> extends PopupRoute<T> {
51 Widget buildPage(BuildContext context, Animation<double> animation, 51 Widget buildPage(BuildContext context, Animation<double> animation,
52 Animation<double> secondaryAnimation) { 52 Animation<double> secondaryAnimation) {
53 return Semantics( 53 return Semantics(
54 - child: widget(context, animation, secondaryAnimation),  
55 scopesRoute: true, 54 scopesRoute: true,
56 explicitChildNodes: true, 55 explicitChildNodes: true,
  56 + child: widget(context, animation, secondaryAnimation),
57 ); 57 );
58 } 58 }
59 59
@@ -187,7 +187,7 @@ extension ExtensionDialog on GetInterface { @@ -187,7 +187,7 @@ extension ExtensionDialog on GetInterface {
187 actions.add(TextButton( 187 actions.add(TextButton(
188 style: TextButton.styleFrom( 188 style: TextButton.styleFrom(
189 tapTargetSize: MaterialTapTargetSize.shrinkWrap, 189 tapTargetSize: MaterialTapTargetSize.shrinkWrap,
190 - padding: EdgeInsets.symmetric(horizontal: 10, vertical: 8), 190 + padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 8),
191 shape: RoundedRectangleBorder( 191 shape: RoundedRectangleBorder(
192 side: BorderSide( 192 side: BorderSide(
193 color: buttonColor ?? theme.colorScheme.secondary, 193 color: buttonColor ?? theme.colorScheme.secondary,
@@ -230,8 +230,8 @@ extension ExtensionDialog on GetInterface { @@ -230,8 +230,8 @@ extension ExtensionDialog on GetInterface {
230 } 230 }
231 231
232 Widget baseAlertDialog = AlertDialog( 232 Widget baseAlertDialog = AlertDialog(
233 - titlePadding: titlePadding ?? EdgeInsets.all(8),  
234 - contentPadding: contentPadding ?? EdgeInsets.all(8), 233 + titlePadding: titlePadding ?? const EdgeInsets.all(8),
  234 + contentPadding: contentPadding ?? const EdgeInsets.all(8),
235 235
236 backgroundColor: backgroundColor ?? theme.dialogBackgroundColor, 236 backgroundColor: backgroundColor ?? theme.dialogBackgroundColor,
237 shape: RoundedRectangleBorder( 237 shape: RoundedRectangleBorder(
@@ -244,7 +244,7 @@ extension ExtensionDialog on GetInterface { @@ -244,7 +244,7 @@ extension ExtensionDialog on GetInterface {
244 content ?? 244 content ??
245 Text(middleText, 245 Text(middleText,
246 textAlign: TextAlign.center, style: middleTextStyle), 246 textAlign: TextAlign.center, style: middleTextStyle),
247 - SizedBox(height: 16), 247 + const SizedBox(height: 16),
248 ButtonTheme( 248 ButtonTheme(
249 minWidth: 78.0, 249 minWidth: 78.0,
250 height: 34.0, 250 height: 34.0,
@@ -433,14 +433,14 @@ extension ExtensionSnackbar on GetInterface { @@ -433,14 +433,14 @@ extension ExtensionSnackbar on GetInterface {
433 ), 433 ),
434 snackPosition: snackPosition ?? SnackPosition.top, 434 snackPosition: snackPosition ?? SnackPosition.top,
435 borderRadius: borderRadius ?? 15, 435 borderRadius: borderRadius ?? 15,
436 - margin: margin ?? EdgeInsets.symmetric(horizontal: 10), 436 + margin: margin ?? const EdgeInsets.symmetric(horizontal: 10),
437 duration: duration, 437 duration: duration,
438 barBlur: barBlur ?? 7.0, 438 barBlur: barBlur ?? 7.0,
439 backgroundColor: backgroundColor ?? Colors.grey.withOpacity(0.2), 439 backgroundColor: backgroundColor ?? Colors.grey.withOpacity(0.2),
440 icon: icon, 440 icon: icon,
441 shouldIconPulse: shouldIconPulse ?? true, 441 shouldIconPulse: shouldIconPulse ?? true,
442 maxWidth: maxWidth, 442 maxWidth: maxWidth,
443 - padding: padding ?? EdgeInsets.all(16), 443 + padding: padding ?? const EdgeInsets.all(16),
444 borderColor: borderColor, 444 borderColor: borderColor,
445 borderWidth: borderWidth, 445 borderWidth: borderWidth,
446 leftBarIndicatorColor: leftBarIndicatorColor, 446 leftBarIndicatorColor: leftBarIndicatorColor,
@@ -457,7 +457,7 @@ extension ExtensionSnackbar on GetInterface { @@ -457,7 +457,7 @@ extension ExtensionSnackbar on GetInterface {
457 snackStyle: snackStyle ?? SnackStyle.floating, 457 snackStyle: snackStyle ?? SnackStyle.floating,
458 forwardAnimationCurve: forwardAnimationCurve ?? Curves.easeOutCirc, 458 forwardAnimationCurve: forwardAnimationCurve ?? Curves.easeOutCirc,
459 reverseAnimationCurve: reverseAnimationCurve ?? Curves.easeOutCirc, 459 reverseAnimationCurve: reverseAnimationCurve ?? Curves.easeOutCirc,
460 - animationDuration: animationDuration ?? Duration(seconds: 1), 460 + animationDuration: animationDuration ?? const Duration(seconds: 1),
461 overlayBlur: overlayBlur ?? 0.0, 461 overlayBlur: overlayBlur ?? 0.0,
462 overlayColor: overlayColor ?? Colors.transparent, 462 overlayColor: overlayColor ?? Colors.transparent,
463 userInputForm: userInputForm); 463 userInputForm: userInputForm);
@@ -1082,14 +1082,14 @@ extension GetNavigationExt on GetInterface { @@ -1082,14 +1082,14 @@ extension GetNavigationExt on GetInterface {
1082 } 1082 }
1083 1083
1084 GetDelegate searchDelegate(dynamic k) { 1084 GetDelegate searchDelegate(dynamic k) {
1085 - GetDelegate _key; 1085 + GetDelegate key;
1086 if (k == null) { 1086 if (k == null) {
1087 - _key = Get.rootController.rootDelegate; 1087 + key = Get.rootController.rootDelegate;
1088 } else { 1088 } else {
1089 if (!keys.containsKey(k)) { 1089 if (!keys.containsKey(k)) {
1090 throw 'Route id ($k) not found'; 1090 throw 'Route id ($k) not found';
1091 } 1091 }
1092 - _key = keys[k]!; 1092 + key = keys[k]!;
1093 } 1093 }
1094 1094
1095 // if (_key.listenersLength == 0 && !testMode) { 1095 // if (_key.listenersLength == 0 && !testMode) {
@@ -1102,7 +1102,7 @@ extension GetNavigationExt on GetInterface { @@ -1102,7 +1102,7 @@ extension GetNavigationExt on GetInterface {
1102 // """; 1102 // """;
1103 // } 1103 // }
1104 1104
1105 - return _key; 1105 + return key;
1106 } 1106 }
1107 1107
1108 /// give current arguments 1108 /// give current arguments
@@ -1156,11 +1156,11 @@ extension GetNavigationExt on GetInterface { @@ -1156,11 +1156,11 @@ extension GetNavigationExt on GetInterface {
1156 1156
1157 /// give access to Theme.of(context) 1157 /// give access to Theme.of(context)
1158 ThemeData get theme { 1158 ThemeData get theme {
1159 - var _theme = ThemeData.fallback(); 1159 + var theme = ThemeData.fallback();
1160 if (context != null) { 1160 if (context != null) {
1161 - _theme = Theme.of(context!); 1161 + theme = Theme.of(context!);
1162 } 1162 }
1163 - return _theme; 1163 + return theme;
1164 } 1164 }
1165 1165
1166 /// The current null safe [WidgetsBinding] 1166 /// The current null safe [WidgetsBinding]
@@ -1283,8 +1283,8 @@ extension OverlayExt on GetInterface { @@ -1283,8 +1283,8 @@ extension OverlayExt on GetInterface {
1283 }); 1283 });
1284 final overlayEntryLoader = OverlayEntry(builder: (context) { 1284 final overlayEntryLoader = OverlayEntry(builder: (context) {
1285 return loadingWidget ?? 1285 return loadingWidget ??
1286 - Center(  
1287 - child: Container( 1286 + const Center(
  1287 + child: SizedBox(
1288 height: 90, 1288 height: 90,
1289 width: 90, 1289 width: 90,
1290 child: Text('Loading...'), 1290 child: Text('Loading...'),
@@ -65,7 +65,7 @@ class GetCupertinoApp extends StatelessWidget { @@ -65,7 +65,7 @@ class GetCupertinoApp extends StatelessWidget {
65 final List<Bind> binds; 65 final List<Bind> binds;
66 final ScrollBehavior? scrollBehavior; 66 final ScrollBehavior? scrollBehavior;
67 67
68 - GetCupertinoApp({ 68 + const GetCupertinoApp({
69 Key? key, 69 Key? key,
70 this.theme, 70 this.theme,
71 this.navigatorKey, 71 this.navigatorKey,
@@ -125,18 +125,7 @@ class GetCupertinoApp extends StatelessWidget { @@ -125,18 +125,7 @@ class GetCupertinoApp extends StatelessWidget {
125 routerDelegate = null, 125 routerDelegate = null,
126 super(key: key); 126 super(key: key);
127 127
128 - static String _cleanRouteName(String name) {  
129 - name = name.replaceAll('() => ', '');  
130 -  
131 - /// uncommonent for URL styling.  
132 - // name = name.paramCase!;  
133 - if (!name.startsWith('/')) {  
134 - name = '/$name';  
135 - }  
136 - return Uri.tryParse(name)?.toString() ?? name;  
137 - }  
138 -  
139 - GetCupertinoApp.router({ 128 + const GetCupertinoApp.router({
140 Key? key, 129 Key? key,
141 this.theme, 130 this.theme,
142 this.routeInformationProvider, 131 this.routeInformationProvider,
@@ -240,8 +229,8 @@ class GetCupertinoApp extends StatelessWidget { @@ -240,8 +229,8 @@ class GetCupertinoApp extends StatelessWidget {
240 ? TextDirection.rtl 229 ? TextDirection.rtl
241 : TextDirection.ltr), 230 : TextDirection.ltr),
242 child: builder == null 231 child: builder == null
243 - ? (child ?? Material())  
244 - : builder!(context, child ?? Material()), 232 + ? (child ?? const Material())
  233 + : builder!(context, child ?? const Material()),
245 ), 234 ),
246 title: title, 235 title: title,
247 onGenerateTitle: onGenerateTitle, 236 onGenerateTitle: onGenerateTitle,
@@ -129,7 +129,7 @@ class GetMaterialApp extends StatelessWidget { @@ -129,7 +129,7 @@ class GetMaterialApp extends StatelessWidget {
129 routerDelegate = null, 129 routerDelegate = null,
130 super(key: key); 130 super(key: key);
131 131
132 - GetMaterialApp.router({ 132 + const GetMaterialApp.router({
133 Key? key, 133 Key? key,
134 this.routeInformationProvider, 134 this.routeInformationProvider,
135 this.scaffoldMessengerKey, 135 this.scaffoldMessengerKey,
@@ -240,7 +240,6 @@ class GetMaterialApp extends StatelessWidget { @@ -240,7 +240,6 @@ class GetMaterialApp extends StatelessWidget {
240 // ], 240 // ],
241 child: Builder(builder: (context) { 241 child: Builder(builder: (context) {
242 final controller = GetRoot.of(context); 242 final controller = GetRoot.of(context);
243 - print('ROUTERRRR ${controller.config.routerDelegate}');  
244 return MaterialApp.router( 243 return MaterialApp.router(
245 routerDelegate: controller.config.routerDelegate, 244 routerDelegate: controller.config.routerDelegate,
246 routeInformationParser: controller.config.routeInformationParser, 245 routeInformationParser: controller.config.routeInformationParser,
@@ -253,8 +252,8 @@ class GetMaterialApp extends StatelessWidget { @@ -253,8 +252,8 @@ class GetMaterialApp extends StatelessWidget {
253 ? TextDirection.rtl 252 ? TextDirection.rtl
254 : TextDirection.ltr), 253 : TextDirection.ltr),
255 child: builder == null 254 child: builder == null
256 - ? (child ?? Material())  
257 - : builder!(context, child ?? Material()), 255 + ? (child ?? const Material())
  256 + : builder!(context, child ?? const Material()),
258 ), 257 ),
259 title: title, 258 title: title,
260 onGenerateTitle: onGenerateTitle, 259 onGenerateTitle: onGenerateTitle,
@@ -276,7 +276,7 @@ class ConfigData { @@ -276,7 +276,7 @@ class ConfigData {
276 } 276 }
277 277
278 class GetRoot extends StatefulWidget { 278 class GetRoot extends StatefulWidget {
279 - GetRoot({ 279 + const GetRoot({
280 Key? key, 280 Key? key,
281 required this.config, 281 required this.config,
282 required this.child, 282 required this.child,
@@ -132,15 +132,15 @@ class GetPageRoute<T> extends PageRoute<T> @@ -132,15 +132,15 @@ class GetPageRoute<T> extends PageRoute<T>
132 final dep = item.dependencies(); 132 final dep = item.dependencies();
133 if (dep is List<Bind>) { 133 if (dep is List<Bind>) {
134 _child = Binds( 134 _child = Binds(
135 - child: middlewareRunner.runOnPageBuilt(pageToBuild()),  
136 binds: dep, 135 binds: dep,
  136 + child: middlewareRunner.runOnPageBuilt(pageToBuild()),
137 ); 137 );
138 } 138 }
139 } 139 }
140 } else if (bindingsToBind is List<Bind>) { 140 } else if (bindingsToBind is List<Bind>) {
141 _child = Binds( 141 _child = Binds(
142 - child: middlewareRunner.runOnPageBuilt(pageToBuild()),  
143 binds: bindingsToBind, 142 binds: bindingsToBind,
  143 + child: middlewareRunner.runOnPageBuilt(pageToBuild()),
144 ); 144 );
145 } 145 }
146 } 146 }
@@ -89,7 +89,7 @@ class SlideDownTransition { @@ -89,7 +89,7 @@ class SlideDownTransition {
89 Widget child) { 89 Widget child) {
90 return SlideTransition( 90 return SlideTransition(
91 position: Tween<Offset>( 91 position: Tween<Offset>(
92 - begin: Offset(0.0, 1.0), 92 + begin: const Offset(0.0, 1.0),
93 end: Offset.zero, 93 end: Offset.zero,
94 ).animate(animation), 94 ).animate(animation),
95 child: child, 95 child: child,
@@ -107,7 +107,7 @@ class SlideLeftTransition { @@ -107,7 +107,7 @@ class SlideLeftTransition {
107 Widget child) { 107 Widget child) {
108 return SlideTransition( 108 return SlideTransition(
109 position: Tween<Offset>( 109 position: Tween<Offset>(
110 - begin: Offset(-1.0, 0.0), 110 + begin: const Offset(-1.0, 0.0),
111 end: Offset.zero, 111 end: Offset.zero,
112 ).animate(animation), 112 ).animate(animation),
113 child: child, 113 child: child,
@@ -125,7 +125,7 @@ class SlideRightTransition { @@ -125,7 +125,7 @@ class SlideRightTransition {
125 Widget child) { 125 Widget child) {
126 return SlideTransition( 126 return SlideTransition(
127 position: Tween<Offset>( 127 position: Tween<Offset>(
128 - begin: Offset(1.0, 0.0), 128 + begin: const Offset(1.0, 0.0),
129 end: Offset.zero, 129 end: Offset.zero,
130 ).animate(animation), 130 ).animate(animation),
131 child: child, 131 child: child,
@@ -143,7 +143,7 @@ class SlideTopTransition { @@ -143,7 +143,7 @@ class SlideTopTransition {
143 Widget child) { 143 Widget child) {
144 return SlideTransition( 144 return SlideTransition(
145 position: Tween<Offset>( 145 position: Tween<Offset>(
146 - begin: Offset(0.0, -1.0), 146 + begin: const Offset(0.0, -1.0),
147 end: Offset.zero, 147 end: Offset.zero,
148 ).animate(animation), 148 ).animate(animation),
149 child: child, 149 child: child,
@@ -48,7 +48,7 @@ class GetNavigator extends Navigator { @@ -48,7 +48,7 @@ class GetNavigator extends Navigator {
48 ); 48 );
49 49
50 GetNavigator({ 50 GetNavigator({
51 - GlobalKey<NavigatorState>? key, 51 + Key? key,
52 bool Function(Route<dynamic>, dynamic)? onPopPage, 52 bool Function(Route<dynamic>, dynamic)? onPopPage,
53 required List<GetPage> pages, 53 required List<GetPage> pages,
54 List<NavigatorObserver>? observers, 54 List<NavigatorObserver>? observers,
@@ -164,19 +164,19 @@ class GetPage<T> extends Page<T> { @@ -164,19 +164,19 @@ class GetPage<T> extends Page<T> {
164 @override 164 @override
165 Route<T> createRoute(BuildContext context) { 165 Route<T> createRoute(BuildContext context) {
166 // return GetPageRoute<T>(settings: this, page: page); 166 // return GetPageRoute<T>(settings: this, page: page);
167 - final _page = PageRedirect( 167 + final page = PageRedirect(
168 route: this, 168 route: this,
169 settings: this, 169 settings: this,
170 unknownRoute: unknownRoute, 170 unknownRoute: unknownRoute,
171 ).getPageToRoute<T>(this, unknownRoute, context); 171 ).getPageToRoute<T>(this, unknownRoute, context);
172 172
173 - return _page; 173 + return page;
174 } 174 }
175 175
176 static PathDecoded _nameToRegex(String path) { 176 static PathDecoded _nameToRegex(String path) {
177 var keys = <String?>[]; 177 var keys = <String?>[];
178 178
179 - String _replace(Match pattern) { 179 + String recursiveReplace(Match pattern) {
180 var buffer = StringBuffer('(?:'); 180 var buffer = StringBuffer('(?:');
181 181
182 if (pattern[1] != null) buffer.write('.'); 182 if (pattern[1] != null) buffer.write('.');
@@ -188,7 +188,7 @@ class GetPage<T> extends Page<T> { @@ -188,7 +188,7 @@ class GetPage<T> extends Page<T> {
188 } 188 }
189 189
190 var stringPath = '$path/?' 190 var stringPath = '$path/?'
191 - .replaceAllMapped(RegExp(r'(\.)?:(\w+)(\?)?'), _replace) 191 + .replaceAllMapped(RegExp(r'(\.)?:(\w+)(\?)?'), recursiveReplace)
192 .replaceAll('//', '/'); 192 .replaceAll('//', '/');
193 193
194 return PathDecoded(RegExp('^$stringPath\$'), keys); 194 return PathDecoded(RegExp('^$stringPath\$'), keys);
@@ -93,7 +93,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder> @@ -93,7 +93,7 @@ class GetDelegate extends RouterDelegate<RouteDecoder>
93 }) : navigatorKey = navigatorKey ?? GlobalKey<NavigatorState>(), 93 }) : navigatorKey = navigatorKey ?? GlobalKey<NavigatorState>(),
94 notFoundRoute = notFoundRoute ??= GetPage( 94 notFoundRoute = notFoundRoute ??= GetPage(
95 name: '/404', 95 name: '/404',
96 - page: () => Scaffold( 96 + page: () => const Scaffold(
97 body: Center(child: Text('Route not found')), 97 body: Center(child: Text('Route not found')),
98 ), 98 ),
99 ) { 99 ) {
@@ -380,8 +380,8 @@ Cannot read the previousTitle for a route that has not yet been installed''', @@ -380,8 +380,8 @@ Cannot read the previousTitle for a route that has not yet been installed''',
380 ? CurvedAnimation(parent: animation, curve: finalCurve) 380 ? CurvedAnimation(parent: animation, curve: finalCurve)
381 : animation, 381 : animation,
382 secondaryRouteAnimation: secondaryAnimation, 382 secondaryRouteAnimation: secondaryAnimation,
383 - child: child,  
384 linearTransition: linearTransition, 383 linearTransition: linearTransition,
  384 + child: child,
385 ); 385 );
386 } else { 386 } else {
387 if (route.customTransition != null) { 387 if (route.customTransition != null) {
@@ -636,7 +636,7 @@ Cannot read the previousTitle for a route that has not yet been installed''', @@ -636,7 +636,7 @@ Cannot read the previousTitle for a route that has not yet been installed''',
636 )); 636 ));
637 637
638 case Transition.fade: 638 case Transition.fade:
639 - return FadeUpwardsPageTransitionsBuilder().buildTransitions( 639 + return const FadeUpwardsPageTransitionsBuilder().buildTransitions(
640 route, 640 route,
641 context, 641 context,
642 animation, 642 animation,
@@ -656,7 +656,7 @@ Cannot read the previousTitle for a route that has not yet been installed''', @@ -656,7 +656,7 @@ Cannot read the previousTitle for a route that has not yet been installed''',
656 )); 656 ));
657 657
658 case Transition.topLevel: 658 case Transition.topLevel:
659 - return ZoomPageTransitionsBuilder().buildTransitions( 659 + return const ZoomPageTransitionsBuilder().buildTransitions(
660 route, 660 route,
661 context, 661 context,
662 animation, 662 animation,
@@ -676,7 +676,7 @@ Cannot read the previousTitle for a route that has not yet been installed''', @@ -676,7 +676,7 @@ Cannot read the previousTitle for a route that has not yet been installed''',
676 )); 676 ));
677 677
678 case Transition.native: 678 case Transition.native:
679 - return PageTransitionsTheme().buildTransitions( 679 + return const PageTransitionsTheme().buildTransitions(
680 route, 680 route,
681 context, 681 context,
682 iosAnimation, 682 iosAnimation,
@@ -57,17 +57,17 @@ class Dependencies { @@ -57,17 +57,17 @@ class Dependencies {
57 } 57 }
58 58
59 abstract class Module extends StatefulWidget { 59 abstract class Module extends StatefulWidget {
60 - Module({Key? key}) : super(key: key); 60 + const Module({Key? key}) : super(key: key);
61 61
62 Widget view(BuildContext context); 62 Widget view(BuildContext context);
63 63
64 void dependencies(Dependencies i); 64 void dependencies(Dependencies i);
65 65
66 @override 66 @override
67 - _ModuleState createState() => _ModuleState(); 67 + ModuleState createState() => ModuleState();
68 } 68 }
69 69
70 -class _ModuleState extends State<Module> { 70 +class ModuleState extends State<Module> {
71 @override 71 @override
72 void initState() { 72 void initState() {
73 RouterReportManager.instance.reportCurrentRoute(this); 73 RouterReportManager.instance.reportCurrentRoute(this);
@@ -57,10 +57,10 @@ class RouteDecoder { @@ -57,10 +57,10 @@ class RouteDecoder {
57 } 57 }
58 58
59 void replaceArguments(Object? arguments) { 59 void replaceArguments(Object? arguments) {
60 - final _route = route;  
61 - if (_route != null) {  
62 - final index = currentTreeBranch.indexOf(_route);  
63 - currentTreeBranch[index] = _route.copyWith(arguments: arguments); 60 + final newRoute = route;
  61 + if (newRoute != null) {
  62 + final index = currentTreeBranch.indexOf(newRoute);
  63 + currentTreeBranch[index] = newRoute.copyWith(arguments: arguments);
64 } 64 }
65 } 65 }
66 66
@@ -130,8 +130,8 @@ class MiddlewareRunner { @@ -130,8 +130,8 @@ class MiddlewareRunner {
130 final List<GetMiddleware>? _middlewares; 130 final List<GetMiddleware>? _middlewares;
131 131
132 List<GetMiddleware> _getMiddlewares() { 132 List<GetMiddleware> _getMiddlewares() {
133 - final _m = _middlewares ?? <GetMiddleware>[];  
134 - return List.of(_m) 133 + final newMiddleware = _middlewares ?? <GetMiddleware>[];
  134 + return List.of(newMiddleware)
135 ..sort( 135 ..sort(
136 (a, b) => (a.priority ?? 0).compareTo(b.priority ?? 0), 136 (a, b) => (a.priority ?? 0).compareTo(b.priority ?? 0),
137 ); 137 );
@@ -198,34 +198,33 @@ class PageRedirect { @@ -198,34 +198,33 @@ class PageRedirect {
198 GetPageRoute<T> getPageToRoute<T>( 198 GetPageRoute<T> getPageToRoute<T>(
199 GetPage rou, GetPage? unk, BuildContext context) { 199 GetPage rou, GetPage? unk, BuildContext context) {
200 while (needRecheck(context)) {} 200 while (needRecheck(context)) {}
201 - final _r = (isUnknown ? unk : rou)!; 201 + final r = (isUnknown ? unk : rou)!;
202 202
203 return GetPageRoute<T>( 203 return GetPageRoute<T>(
204 - page: _r.page,  
205 - parameter: _r.parameters,  
206 - alignment: _r.alignment,  
207 - title: _r.title,  
208 - maintainState: _r.maintainState,  
209 - routeName: _r.name,  
210 - settings: _r,  
211 - curve: _r.curve,  
212 - showCupertinoParallax: _r.showCupertinoParallax,  
213 - gestureWidth: _r.gestureWidth,  
214 - opaque: _r.opaque,  
215 - customTransition: _r.customTransition,  
216 - bindings: _r.bindings,  
217 - binding: _r.binding,  
218 - binds: _r.binds,  
219 - transitionDuration:  
220 - _r.transitionDuration ?? Get.defaultTransitionDuration, 204 + page: r.page,
  205 + parameter: r.parameters,
  206 + alignment: r.alignment,
  207 + title: r.title,
  208 + maintainState: r.maintainState,
  209 + routeName: r.name,
  210 + settings: r,
  211 + curve: r.curve,
  212 + showCupertinoParallax: r.showCupertinoParallax,
  213 + gestureWidth: r.gestureWidth,
  214 + opaque: r.opaque,
  215 + customTransition: r.customTransition,
  216 + bindings: r.bindings,
  217 + binding: r.binding,
  218 + binds: r.binds,
  219 + transitionDuration: r.transitionDuration ?? Get.defaultTransitionDuration,
221 reverseTransitionDuration: 220 reverseTransitionDuration:
222 - _r.reverseTransitionDuration ?? Get.defaultTransitionDuration, 221 + r.reverseTransitionDuration ?? Get.defaultTransitionDuration,
223 // performIncomeAnimation: _r.performIncomeAnimation, 222 // performIncomeAnimation: _r.performIncomeAnimation,
224 // performOutGoingAnimation: _r.performOutGoingAnimation, 223 // performOutGoingAnimation: _r.performOutGoingAnimation,
225 - transition: _r.transition,  
226 - popGesture: _r.popGesture,  
227 - fullscreenDialog: _r.fullscreenDialog,  
228 - middlewares: _r.middlewares, 224 + transition: r.transition,
  225 + popGesture: r.popGesture,
  226 + fullscreenDialog: r.fullscreenDialog,
  227 + middlewares: r.middlewares,
229 ); 228 );
230 } 229 }
231 230
@@ -4,14 +4,14 @@ import '../router_report.dart'; @@ -4,14 +4,14 @@ import '../router_report.dart';
4 import 'default_route.dart'; 4 import 'default_route.dart';
5 5
6 class RouteReport extends StatefulWidget { 6 class RouteReport extends StatefulWidget {
7 - RouteReport({Key? key, required this.builder}) : super(key: key); 7 + const RouteReport({Key? key, required this.builder}) : super(key: key);
8 final WidgetBuilder builder; 8 final WidgetBuilder builder;
9 9
10 @override 10 @override
11 - _RouteReportState createState() => _RouteReportState(); 11 + RouteReportState createState() => RouteReportState();
12 } 12 }
13 13
14 -class _RouteReportState extends State<RouteReport> with RouteReportMixin { 14 +class RouteReportState extends State<RouteReport> with RouteReportMixin {
15 @override 15 @override
16 void initState() { 16 void initState() {
17 RouterReportManager.instance.reportCurrentRoute(this); 17 RouterReportManager.instance.reportCurrentRoute(this);
@@ -9,12 +9,13 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> @@ -9,12 +9,13 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object>
9 9
10 //keys 10 //keys
11 RouterOutlet.builder({ 11 RouterOutlet.builder({
  12 + super.key,
12 TDelegate? delegate, 13 TDelegate? delegate,
13 required this.builder, 14 required this.builder,
14 - }) : routerDelegate = delegate ?? Get.delegate<TDelegate, T>()!,  
15 - super(); 15 + }) : routerDelegate = delegate ?? Get.delegate<TDelegate, T>()!;
16 16
17 RouterOutlet({ 17 RouterOutlet({
  18 + Key? key,
18 TDelegate? delegate, 19 TDelegate? delegate,
19 required Iterable<GetPage> Function(T currentNavStack) pickPages, 20 required Iterable<GetPage> Function(T currentNavStack) pickPages,
20 required Widget Function( 21 required Widget Function(
@@ -24,6 +25,7 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> @@ -24,6 +25,7 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object>
24 ) 25 )
25 pageBuilder, 26 pageBuilder,
26 }) : this.builder( 27 }) : this.builder(
  28 + key: key,
27 builder: (context) { 29 builder: (context) {
28 final currentConfig = context.delegate.currentConfiguration as T?; 30 final currentConfig = context.delegate.currentConfiguration as T?;
29 final rDelegate = context.delegate as TDelegate; 31 final rDelegate = context.delegate as TDelegate;
@@ -37,11 +39,11 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object> @@ -37,11 +39,11 @@ class RouterOutlet<TDelegate extends RouterDelegate<T>, T extends Object>
37 delegate: delegate, 39 delegate: delegate,
38 ); 40 );
39 @override 41 @override
40 - _RouterOutletState<TDelegate, T> createState() =>  
41 - _RouterOutletState<TDelegate, T>(); 42 + RouterOutletState<TDelegate, T> createState() =>
  43 + RouterOutletState<TDelegate, T>();
42 } 44 }
43 45
44 -class _RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object> 46 +class RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object>
45 extends State<RouterOutlet<TDelegate, T>> { 47 extends State<RouterOutlet<TDelegate, T>> {
46 RouterDelegate? delegate; 48 RouterDelegate? delegate;
47 late ChildBackButtonDispatcher _backButtonDispatcher; 49 late ChildBackButtonDispatcher _backButtonDispatcher;
@@ -80,7 +82,7 @@ class _RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object> @@ -80,7 +82,7 @@ class _RouterOutletState<TDelegate extends RouterDelegate<T>, T extends Object>
80 } 82 }
81 } 83 }
82 84
83 -// class _RouterOutletState<TDelegate extends RouterDelegate<T>, 85 +// class RouterOutletState<TDelegate extends RouterDelegate<T>,
84 //T extends Object> 86 //T extends Object>
85 // extends State<RouterOutlet<TDelegate, T>> { 87 // extends State<RouterOutlet<TDelegate, T>> {
86 // TDelegate get delegate => context.delegate as TDelegate; 88 // TDelegate get delegate => context.delegate as TDelegate;
@@ -152,11 +154,11 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { @@ -152,11 +154,11 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
152 delegate: delegate, 154 delegate: delegate,
153 ); 155 );
154 GetRouterOutlet.pickPages({ 156 GetRouterOutlet.pickPages({
  157 + super.key,
155 Widget Function(GetDelegate delegate)? emptyWidget, 158 Widget Function(GetDelegate delegate)? emptyWidget,
156 GetPage Function(GetDelegate delegate)? emptyPage, 159 GetPage Function(GetDelegate delegate)? emptyPage,
157 required Iterable<GetPage> Function(RouteDecoder currentNavStack) pickPages, 160 required Iterable<GetPage> Function(RouteDecoder currentNavStack) pickPages,
158 bool Function(Route<dynamic>, dynamic)? onPopPage, 161 bool Function(Route<dynamic>, dynamic)? onPopPage,
159 - GlobalKey<NavigatorState>? key,  
160 GetDelegate? delegate, 162 GetDelegate? delegate,
161 }) : super( 163 }) : super(
162 pageBuilder: (context, rDelegate, pages) { 164 pageBuilder: (context, rDelegate, pages) {
@@ -179,13 +181,14 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> { @@ -179,13 +181,14 @@ class GetRouterOutlet extends RouterOutlet<GetDelegate, RouteDecoder> {
179 key: key, 181 key: key,
180 ); 182 );
181 } 183 }
182 - return (emptyWidget?.call(rDelegate) ?? SizedBox.shrink()); 184 + return (emptyWidget?.call(rDelegate) ?? const SizedBox.shrink());
183 }, 185 },
184 pickPages: pickPages, 186 pickPages: pickPages,
185 delegate: delegate ?? Get.rootController.rootDelegate, 187 delegate: delegate ?? Get.rootController.rootDelegate,
186 ); 188 );
187 189
188 GetRouterOutlet.builder({ 190 GetRouterOutlet.builder({
  191 + super.key,
189 required Widget Function( 192 required Widget Function(
190 BuildContext context, 193 BuildContext context,
191 ) 194 )
@@ -12,7 +12,7 @@ typedef SnackbarStatusCallback = void Function(SnackbarStatus? status); @@ -12,7 +12,7 @@ typedef SnackbarStatusCallback = void Function(SnackbarStatus? status);
12 12
13 @Deprecated('use GetSnackBar') 13 @Deprecated('use GetSnackBar')
14 class GetBar extends GetSnackBar { 14 class GetBar extends GetSnackBar {
15 - GetBar({ 15 + const GetBar({
16 Key? key, 16 Key? key,
17 String? title, 17 String? title,
18 String? message, 18 String? message,
@@ -293,11 +293,11 @@ class GetSnackBarState extends State<GetSnackBar> @@ -293,11 +293,11 @@ class GetSnackBarState extends State<GetSnackBar>
293 AnimationController? _fadeController; 293 AnimationController? _fadeController;
294 late Animation<double> _fadeAnimation; 294 late Animation<double> _fadeAnimation;
295 295
296 - final Widget _emptyWidget = SizedBox(width: 0.0, height: 0.0); 296 + final Widget _emptyWidget = const SizedBox(width: 0.0, height: 0.0);
297 final double _initialOpacity = 1.0; 297 final double _initialOpacity = 1.0;
298 final double _finalOpacity = 0.4; 298 final double _finalOpacity = 0.4;
299 299
300 - final Duration _pulseAnimationDuration = Duration(seconds: 1); 300 + final Duration _pulseAnimationDuration = const Duration(seconds: 1);
301 301
302 late bool _isTitlePresent; 302 late bool _isTitlePresent;
303 late double _messageTopMargin; 303 late double _messageTopMargin;
@@ -513,9 +513,9 @@ You need to either use message[String], or messageText[Widget] or define a userI @@ -513,9 +513,9 @@ You need to either use message[String], or messageText[Widget] or define a userI
513 padding: const EdgeInsets.only( 513 padding: const EdgeInsets.only(
514 left: 8.0, right: 8.0, bottom: 8.0, top: 16.0), 514 left: 8.0, right: 8.0, bottom: 8.0, top: 16.0),
515 child: FocusScope( 515 child: FocusScope(
516 - child: widget.userInputForm!,  
517 node: _focusNode, 516 node: _focusNode,
518 autofocus: true, 517 autofocus: true,
  518 + child: widget.userInputForm!,
519 ), 519 ),
520 ), 520 ),
521 ); 521 );
@@ -581,7 +581,7 @@ You need to either use message[String], or messageText[Widget] or define a userI @@ -581,7 +581,7 @@ You need to either use message[String], or messageText[Widget] or define a userI
581 child: widget.titleText ?? 581 child: widget.titleText ??
582 Text( 582 Text(
583 widget.title ?? "", 583 widget.title ?? "",
584 - style: TextStyle( 584 + style: const TextStyle(
585 fontSize: 16.0, 585 fontSize: 16.0,
586 color: Colors.white, 586 color: Colors.white,
587 fontWeight: FontWeight.bold, 587 fontWeight: FontWeight.bold,
@@ -600,8 +600,8 @@ You need to either use message[String], or messageText[Widget] or define a userI @@ -600,8 +600,8 @@ You need to either use message[String], or messageText[Widget] or define a userI
600 child: widget.messageText ?? 600 child: widget.messageText ??
601 Text( 601 Text(
602 widget.message ?? "", 602 widget.message ?? "",
603 - style:  
604 - TextStyle(fontSize: 14.0, color: Colors.white), 603 + style: const TextStyle(
  604 + fontSize: 14.0, color: Colors.white),
605 ), 605 ),
606 ), 606 ),
607 ], 607 ],
@@ -220,15 +220,15 @@ class SnackbarController { @@ -220,15 +220,15 @@ class SnackbarController {
220 ], 220 ],
221 OverlayEntry( 221 OverlayEntry(
222 builder: (context) => Semantics( 222 builder: (context) => Semantics(
  223 + focused: false,
  224 + container: true,
  225 + explicitChildNodes: true,
223 child: AlignTransition( 226 child: AlignTransition(
224 alignment: _animation, 227 alignment: _animation,
225 child: snackbar.isDismissible 228 child: snackbar.isDismissible
226 ? _getDismissibleSnack(child) 229 ? _getDismissibleSnack(child)
227 : _getSnackbarContainer(child), 230 : _getSnackbarContainer(child),
228 ), 231 ),
229 - focused: false,  
230 - container: true,  
231 - explicitChildNodes: true,  
232 ), 232 ),
233 maintainState: false, 233 maintainState: false,
234 opaque: false, 234 opaque: false,
@@ -239,10 +239,10 @@ class SnackbarController { @@ -239,10 +239,10 @@ class SnackbarController {
239 Widget _getBodyWidget() { 239 Widget _getBodyWidget() {
240 return Builder(builder: (_) { 240 return Builder(builder: (_) {
241 return GestureDetector( 241 return GestureDetector(
242 - child: snackbar,  
243 onTap: snackbar.onTap != null 242 onTap: snackbar.onTap != null
244 ? () => snackbar.onTap?.call(snackbar) 243 ? () => snackbar.onTap?.call(snackbar)
245 : null, 244 : null,
  245 + child: snackbar,
246 ); 246 );
247 }); 247 });
248 } 248 }
@@ -226,11 +226,11 @@ Worker debounce<T>( @@ -226,11 +226,11 @@ Worker debounce<T>(
226 void Function()? onDone, 226 void Function()? onDone,
227 bool? cancelOnError, 227 bool? cancelOnError,
228 }) { 228 }) {
229 - final _debouncer = 229 + final newDebouncer =
230 Debouncer(delay: time ?? const Duration(milliseconds: 800)); 230 Debouncer(delay: time ?? const Duration(milliseconds: 800));
231 StreamSubscription sub = listener.listen( 231 StreamSubscription sub = listener.listen(
232 (event) { 232 (event) {
233 - _debouncer(() { 233 + newDebouncer(() {
234 callback(event); 234 callback(event);
235 }); 235 });
236 }, 236 },
@@ -22,6 +22,7 @@ class GetX<T extends GetLifeCycleMixin> extends StatefulWidget { @@ -22,6 +22,7 @@ class GetX<T extends GetLifeCycleMixin> extends StatefulWidget {
22 final String? tag; 22 final String? tag;
23 23
24 const GetX({ 24 const GetX({
  25 + super.key,
25 this.tag, 26 this.tag,
26 required this.builder, 27 required this.builder,
27 this.global = true, 28 this.global = true,
@@ -32,7 +32,7 @@ mixin StateMixin<T> on ListNotifier { @@ -32,7 +32,7 @@ mixin StateMixin<T> on ListNotifier {
32 void _fillInitialStatus() { 32 void _fillInitialStatus() {
33 _status = (_value == null || _value!._isEmpty()) 33 _status = (_value == null || _value!._isEmpty())
34 ? GetStatus<T>.loading() 34 ? GetStatus<T>.loading()
35 - : GetStatus<T>.success(_value!); 35 + : GetStatus<T>.success(_value as T);
36 } 36 }
37 37
38 GetStatus<T> get status { 38 GetStatus<T> get status {
@@ -231,12 +231,12 @@ extension StateExt<T> on StateMixin<T> { @@ -231,12 +231,12 @@ extension StateExt<T> on StateMixin<T> {
231 : Center(child: Text('A error occurred: ${status.errorMessage}')); 231 : Center(child: Text('A error occurred: ${status.errorMessage}'));
232 } else if (status.isEmpty) { 232 } else if (status.isEmpty) {
233 return onEmpty ?? 233 return onEmpty ??
234 - SizedBox.shrink(); // Also can be widget(null); but is risky 234 + const SizedBox.shrink(); // Also can be widget(null); but is risky
235 } else if (status.isSuccess) { 235 } else if (status.isSuccess) {
236 return widget(value); 236 return widget(value);
237 } else if (status.isCustom) { 237 } else if (status.isCustom) {
238 return onCustom?.call(_) ?? 238 return onCustom?.call(_) ??
239 - SizedBox.shrink(); // Also can be widget(null); but is risky 239 + const SizedBox.shrink(); // Also can be widget(null); but is risky
240 } 240 }
241 return widget(value); 241 return widget(value);
242 }); 242 });
@@ -24,7 +24,7 @@ abstract class ObxWidget extends ObxStatelessWidget { @@ -24,7 +24,7 @@ abstract class ObxWidget extends ObxStatelessWidget {
24 class Obx extends ObxWidget { 24 class Obx extends ObxWidget {
25 final WidgetCallback builder; 25 final WidgetCallback builder;
26 26
27 - const Obx(this.builder); 27 + const Obx(this.builder, {super.key});
28 28
29 @override 29 @override
30 Widget build(BuildContext context) { 30 Widget build(BuildContext context) {
@@ -482,7 +482,7 @@ class BindElement<T> extends InheritedElement { @@ -482,7 +482,7 @@ class BindElement<T> extends InheritedElement {
482 /// setState "link" from the Controller. 482 /// setState "link" from the Controller.
483 void _subscribeToController() { 483 void _subscribeToController() {
484 if (widget.filter != null) { 484 if (widget.filter != null) {
485 - _filter = widget.filter!(_controller!); 485 + _filter = widget.filter!(_controller as T);
486 } 486 }
487 final filter = _filter != null ? _filterUpdate : getUpdate; 487 final filter = _filter != null ? _filterUpdate : getUpdate;
488 final localController = _controller; 488 final localController = _controller;
@@ -510,7 +510,7 @@ class BindElement<T> extends InheritedElement { @@ -510,7 +510,7 @@ class BindElement<T> extends InheritedElement {
510 } 510 }
511 511
512 void _filterUpdate() { 512 void _filterUpdate() {
513 - var newFilter = widget.filter!(_controller!); 513 + var newFilter = widget.filter!(_controller as T);
514 if (newFilter != _filter) { 514 if (newFilter != _filter) {
515 _filter = newFilter; 515 _filter = newFilter;
516 getUpdate(); 516 getUpdate();
@@ -176,11 +176,11 @@ class Notifier { @@ -176,11 +176,11 @@ class Notifier {
176 _notifyData?.disposers.add(listener); 176 _notifyData?.disposers.add(listener);
177 } 177 }
178 178
179 - void read(ListNotifierSingleMixin _updaters) { 179 + void read(ListNotifierSingleMixin updaters) {
180 final listener = _notifyData?.updater; 180 final listener = _notifyData?.updater;
181 - if (listener != null && !_updaters.containsListener(listener)) {  
182 - _updaters.addListener(listener);  
183 - add(() => _updaters.removeListener(listener)); 181 + if (listener != null && !updaters.containsListener(listener)) {
  182 + updaters.addListener(listener);
  183 + add(() => updaters.removeListener(listener));
184 } 184 }
185 } 185 }
186 186
@@ -188,7 +188,7 @@ class Notifier { @@ -188,7 +188,7 @@ class Notifier {
188 _notifyData = data; 188 _notifyData = data;
189 final result = builder(); 189 final result = builder();
190 if (data.disposers.isEmpty && data.throwException) { 190 if (data.disposers.isEmpty && data.throwException) {
191 - throw ObxError(); 191 + throw const ObxError();
192 } 192 }
193 _notifyData = null; 193 _notifyData = null;
194 return result; 194 return result;
@@ -38,12 +38,16 @@ class ValueBuilder<T> extends StatefulWidget { @@ -38,12 +38,16 @@ class ValueBuilder<T> extends StatefulWidget {
38 }) : super(key: key); 38 }) : super(key: key);
39 39
40 @override 40 @override
41 - _ValueBuilderState<T> createState() => _ValueBuilderState<T>(initialValue); 41 + ValueBuilderState<T> createState() => ValueBuilderState<T>();
42 } 42 }
43 43
44 -class _ValueBuilderState<T> extends State<ValueBuilder<T>> {  
45 - T value;  
46 - _ValueBuilderState(this.value); 44 +class ValueBuilderState<T> extends State<ValueBuilder<T>> {
  45 + late T value;
  46 + @override
  47 + void initState() {
  48 + value = widget.initialValue;
  49 + super.initState();
  50 + }
47 51
48 @override 52 @override
49 Widget build(BuildContext context) => widget.builder(value, updater); 53 Widget build(BuildContext context) => widget.builder(value, updater);
1 import 'dart:math'; 1 import 'dart:math';
2 2
3 -extension Precision on double { 3 +extension DoubleExt on double {
4 double toPrecision(int fractionDigits) { 4 double toPrecision(int fractionDigits) {
5 var mod = pow(10, fractionDigits.toDouble()).toDouble(); 5 var mod = pow(10, fractionDigits.toDouble()).toDouble();
6 return ((this * mod).round().toDouble() / mod); 6 return ((this * mod).round().toDouble() / mod);
7 } 7 }
  8 +
  9 + Duration get milliseconds => Duration(microseconds: (this * 1000).round());
  10 +
  11 + Duration get ms => milliseconds;
  12 +
  13 + Duration get seconds => Duration(milliseconds: (this * 1000).round());
  14 +
  15 + Duration get minutes =>
  16 + Duration(seconds: (this * Duration.secondsPerMinute).round());
  17 +
  18 + Duration get hours =>
  19 + Duration(minutes: (this * Duration.minutesPerHour).round());
  20 +
  21 + Duration get days => Duration(hours: (this * Duration.hoursPerDay).round());
8 } 22 }
@@ -3,6 +3,7 @@ export 'double_extensions.dart'; @@ -3,6 +3,7 @@ export 'double_extensions.dart';
3 export 'duration_extensions.dart'; 3 export 'duration_extensions.dart';
4 export 'dynamic_extensions.dart'; 4 export 'dynamic_extensions.dart';
5 export 'event_loop_extensions.dart'; 5 export 'event_loop_extensions.dart';
  6 +export 'int_extensions.dart';
6 export 'internacionalization.dart' hide FirstWhereExt; 7 export 'internacionalization.dart' hide FirstWhereExt;
7 export 'iterable_extensions.dart'; 8 export 'iterable_extensions.dart';
8 export 'num_extensions.dart'; 9 export 'num_extensions.dart';
  1 +extension DurationExt on int {
  2 + Duration get seconds => Duration(seconds: this);
  3 +
  4 + Duration get days => Duration(days: this);
  5 +
  6 + Duration get hours => Duration(hours: this);
  7 +
  8 + Duration get minutes => Duration(minutes: this);
  9 +
  10 + Duration get milliseconds => Duration(milliseconds: this);
  11 +
  12 + Duration get microseconds => Duration(microseconds: this);
  13 +
  14 + Duration get ms => milliseconds;
  15 +}
@@ -28,40 +28,4 @@ extension GetNumUtils on num { @@ -28,40 +28,4 @@ extension GetNumUtils on num {
28 Duration(milliseconds: (this * 1000).round()), 28 Duration(milliseconds: (this * 1000).round()),
29 callback, 29 callback,
30 ); 30 );
31 -  
32 - /// Easy way to make Durations from numbers.  
33 - ///  
34 - /// Sample:  
35 - /// ```  
36 - /// print(1.seconds + 200.milliseconds);  
37 - /// print(1.hours + 30.minutes);  
38 - /// print(1.5.hours);  
39 - ///```  
40 - Duration get milliseconds => Duration(microseconds: (this * 1000).round());  
41 -  
42 - Duration get seconds => Duration(milliseconds: (this * 1000).round());  
43 -  
44 - Duration get minutes =>  
45 - Duration(seconds: (this * Duration.secondsPerMinute).round());  
46 -  
47 - Duration get hours =>  
48 - Duration(minutes: (this * Duration.minutesPerHour).round());  
49 -  
50 - Duration get days => Duration(hours: (this * Duration.hoursPerDay).round());  
51 -  
52 -//final _delayMaps = <Function, Future>{};  
53 -// TODO: create a proper Future and control the Timer.  
54 -// Future delay([double seconds = 0, VoidCallback callback]) async {  
55 -// final ms = (seconds * 1000).round();  
56 -// return Future.delayed(Duration(milliseconds: ms), callback);  
57 -// return _delayMaps[callback];  
58 -// }  
59 -//killDelay(VoidCallback callback) {  
60 -// if (_delayMaps.containsKey(callback)) {  
61 -// _delayMaps[callback]?.timeout(Duration.zero, onTimeout: () {  
62 -// print('callbacl eliminado!');  
63 -// });  
64 -// _delayMaps.remove(callback);  
65 -// }  
66 -//}  
67 } 31 }
@@ -6,6 +6,11 @@ import 'package:get/state_manager.dart'; @@ -6,6 +6,11 @@ import 'package:get/state_manager.dart';
6 6
7 int times = 30; 7 int times = 30;
8 8
  9 +void printValue(String value) {
  10 + // ignore: avoid_print
  11 + print(value);
  12 +}
  13 +
9 Future<int> valueNotifier() { 14 Future<int> valueNotifier() {
10 final c = Completer<int>(); 15 final c = Completer<int>();
11 final value = ValueNotifier<int>(0); 16 final value = ValueNotifier<int>(0);
@@ -15,7 +20,7 @@ Future<int> valueNotifier() { @@ -15,7 +20,7 @@ Future<int> valueNotifier() {
15 value.addListener(() { 20 value.addListener(() {
16 if (times == value.value) { 21 if (times == value.value) {
17 timer.stop(); 22 timer.stop();
18 - print( 23 + printValue(
19 """${value.value} listeners notified | [VALUE_NOTIFIER] time: ${timer.elapsedMicroseconds}ms"""); 24 """${value.value} listeners notified | [VALUE_NOTIFIER] time: ${timer.elapsedMicroseconds}ms""");
20 c.complete(timer.elapsedMicroseconds); 25 c.complete(timer.elapsedMicroseconds);
21 } 26 }
@@ -37,7 +42,7 @@ Future<int> getValue() { @@ -37,7 +42,7 @@ Future<int> getValue() {
37 value.addListener(() { 42 value.addListener(() {
38 if (times == value.value) { 43 if (times == value.value) {
39 timer.stop(); 44 timer.stop();
40 - print( 45 + printValue(
41 """${value.value} listeners notified | [GETX_VALUE] time: ${timer.elapsedMicroseconds}ms"""); 46 """${value.value} listeners notified | [GETX_VALUE] time: ${timer.elapsedMicroseconds}ms""");
42 c.complete(timer.elapsedMicroseconds); 47 c.complete(timer.elapsedMicroseconds);
43 } 48 }
@@ -60,7 +65,7 @@ Future<int> stream() { @@ -60,7 +65,7 @@ Future<int> stream() {
60 value.stream.listen((v) { 65 value.stream.listen((v) {
61 if (times == v) { 66 if (times == v) {
62 timer.stop(); 67 timer.stop();
63 - print( 68 + printValue(
64 """$v listeners notified | [STREAM] time: ${timer.elapsedMicroseconds}ms"""); 69 """$v listeners notified | [STREAM] time: ${timer.elapsedMicroseconds}ms""");
65 c.complete(timer.elapsedMicroseconds); 70 c.complete(timer.elapsedMicroseconds);
66 value.close(); 71 value.close();
@@ -84,7 +89,7 @@ Future<int> stream() { @@ -84,7 +89,7 @@ Future<int> stream() {
84 // value.listen((v) { 89 // value.listen((v) {
85 // if (times == v) { 90 // if (times == v) {
86 // timer.stop(); 91 // timer.stop();
87 -// print( 92 +// printValue(
88 // """$v listeners notified | 93 // """$v listeners notified |
89 // [GET_STREAM] time: ${timer.elapsedMicroseconds}ms"""); 94 // [GET_STREAM] time: ${timer.elapsedMicroseconds}ms""");
90 // c.complete(timer.elapsedMicroseconds); 95 // c.complete(timer.elapsedMicroseconds);
@@ -108,7 +113,7 @@ Future<int> miniStream() { @@ -108,7 +113,7 @@ Future<int> miniStream() {
108 value.listen((v) { 113 value.listen((v) {
109 if (times == v) { 114 if (times == v) {
110 timer.stop(); 115 timer.stop();
111 - print( 116 + printValue(
112 """$v listeners notified | [MINI_STREAM] time: ${timer.elapsedMicroseconds}ms"""); 117 """$v listeners notified | [MINI_STREAM] time: ${timer.elapsedMicroseconds}ms""");
113 c.complete(timer.elapsedMicroseconds); 118 c.complete(timer.elapsedMicroseconds);
114 } 119 }
@@ -123,49 +128,49 @@ Future<int> miniStream() { @@ -123,49 +128,49 @@ Future<int> miniStream() {
123 128
124 void main() { 129 void main() {
125 test('percentage test', () { 130 test('percentage test', () {
126 - print('============================================');  
127 - print('PERCENTAGE TEST'); 131 + printValue('============================================');
  132 + printValue('PERCENTAGE TEST');
128 133
129 - final referenceValue = 200;  
130 - final requestedValue = 100; 134 + const referenceValue = 200;
  135 + const requestedValue = 100;
131 136
132 - print(''' 137 + printValue('''
133 referenceValue is ${calculePercentage(referenceValue, requestedValue)}% more than requestedValue'''); 138 referenceValue is ${calculePercentage(referenceValue, requestedValue)}% more than requestedValue''');
134 expect(calculePercentage(referenceValue, requestedValue), 100); 139 expect(calculePercentage(referenceValue, requestedValue), 100);
135 }); 140 });
136 test('run benchmarks from ValueNotifier', () async { 141 test('run benchmarks from ValueNotifier', () async {
137 times = 30; 142 times = 30;
138 - print('============================================');  
139 - print('VALUE_NOTIFIER X GETX_VALUE TEST');  
140 - print('-----------'); 143 + printValue('============================================');
  144 + printValue('VALUE_NOTIFIER X GETX_VALUE TEST');
  145 + printValue('-----------');
141 await getValue(); 146 await getValue();
142 await valueNotifier(); 147 await valueNotifier();
143 - print('-----------'); 148 + printValue('-----------');
144 149
145 times = 30000; 150 times = 30000;
146 final getx = await getValue(); 151 final getx = await getValue();
147 final dart = await valueNotifier(); 152 final dart = await valueNotifier();
148 - print('-----------'); 153 + printValue('-----------');
149 154
150 - print('ValueNotifier delay $dart ms to made $times requests');  
151 - print('GetValue delay $getx ms to made $times requests');  
152 - print('-----------');  
153 - print(''' 155 + printValue('ValueNotifier delay $dart ms to made $times requests');
  156 + printValue('GetValue delay $getx ms to made $times requests');
  157 + printValue('-----------');
  158 + printValue('''
154 GetValue is ${calculePercentage(dart, getx).round()}% faster than Default ValueNotifier with $times requests'''); 159 GetValue is ${calculePercentage(dart, getx).round()}% faster than Default ValueNotifier with $times requests''');
155 }); 160 });
156 161
157 test('run benchmarks from Streams', () async { 162 test('run benchmarks from Streams', () async {
158 times = 30; 163 times = 30;
159 - print('============================================');  
160 - print('DART STREAM X GET_STREAM X GET_MINI_STREAM TEST');  
161 - print('-----------'); 164 + printValue('============================================');
  165 + printValue('DART STREAM X GET_STREAM X GET_MINI_STREAM TEST');
  166 + printValue('-----------');
162 // var getx = await getStream(); 167 // var getx = await getStream();
163 var mini = await miniStream(); 168 var mini = await miniStream();
164 var dart = await stream(); 169 var dart = await stream();
165 - print('-----------');  
166 - print(''' 170 + printValue('-----------');
  171 + printValue('''
167 GetStream is ${calculePercentage(dart, mini).round()}% faster than Default Stream with $times requests'''); 172 GetStream is ${calculePercentage(dart, mini).round()}% faster than Default Stream with $times requests''');
168 - print('-----------'); 173 + printValue('-----------');
169 174
170 times = 30000; 175 times = 30000;
171 dart = await stream(); 176 dart = await stream();
@@ -176,12 +181,12 @@ GetStream is ${calculePercentage(dart, mini).round()}% faster than Default Strea @@ -176,12 +181,12 @@ GetStream is ${calculePercentage(dart, mini).round()}% faster than Default Strea
176 dart = await stream(); 181 dart = await stream();
177 // getx = await getStream(); 182 // getx = await getStream();
178 mini = await miniStream(); 183 mini = await miniStream();
179 - print('-----------');  
180 - print('dart_stream delay $dart ms to made $times requests');  
181 - // print('getx_stream delay $getx ms to made $times requests');  
182 - print('getx_mini_stream delay $mini ms to made $times requests');  
183 - print('-----------');  
184 - print(''' 184 + printValue('-----------');
  185 + printValue('dart_stream delay $dart ms to made $times requests');
  186 + // printValue('getx_stream delay $getx ms to made $times requests');
  187 + printValue('getx_mini_stream delay $mini ms to made $times requests');
  188 + printValue('-----------');
  189 + printValue('''
185 GetStream is ${calculePercentage(dart, mini).round()}% faster than Default Stream with $times requests'''); 190 GetStream is ${calculePercentage(dart, mini).round()}% faster than Default Stream with $times requests''');
186 }); 191 });
187 } 192 }
@@ -101,7 +101,8 @@ void main() { @@ -101,7 +101,8 @@ void main() {
101 101
102 expect(Get.find<Controller>().count, 1); 102 expect(Get.find<Controller>().count, 1);
103 Get.delete<Controller>(); 103 Get.delete<Controller>();
104 - expect(() => Get.find<Controller>(), throwsA(m.TypeMatcher<String>())); 104 + expect(
  105 + () => Get.find<Controller>(), throwsA(const m.TypeMatcher<String>()));
105 Get.reset(); 106 Get.reset();
106 }); 107 });
107 108
@@ -162,7 +163,7 @@ void main() { @@ -162,7 +163,7 @@ void main() {
162 // Get.put(DisposableController()); 163 // Get.put(DisposableController());
163 expect(Get.delete<DisposableController>(), true); 164 expect(Get.delete<DisposableController>(), true);
164 expect(() => Get.find<DisposableController>(), 165 expect(() => Get.find<DisposableController>(),
165 - throwsA(m.TypeMatcher<String>())); 166 + throwsA(const m.TypeMatcher<String>()));
166 }); 167 });
167 168
168 test('Get.put test after delete with disposable controller and init check', 169 test('Get.put test after delete with disposable controller and init check',
@@ -192,7 +193,7 @@ void main() { @@ -192,7 +193,7 @@ void main() {
192 }); 193 });
193 194
194 test('tagged temporary', () async { 195 test('tagged temporary', () async {
195 - final tag = 'tag'; 196 + const tag = 'tag';
196 Get.put(DisposableController(), tag: tag); 197 Get.put(DisposableController(), tag: tag);
197 Get.replace<DisposableController>(Controller(), tag: tag); 198 Get.replace<DisposableController>(Controller(), tag: tag);
198 final instance = Get.find<DisposableController>(tag: tag); 199 final instance = Get.find<DisposableController>(tag: tag);
@@ -201,7 +202,7 @@ void main() { @@ -201,7 +202,7 @@ void main() {
201 }); 202 });
202 203
203 test('tagged permanent', () async { 204 test('tagged permanent', () async {
204 - final tag = 'tag'; 205 + const tag = 'tag';
205 Get.put(DisposableController(), permanent: true, tag: tag); 206 Get.put(DisposableController(), permanent: true, tag: tag);
206 Get.replace<DisposableController>(Controller(), tag: tag); 207 Get.replace<DisposableController>(Controller(), tag: tag);
207 final instance = Get.find<DisposableController>(tag: tag); 208 final instance = Get.find<DisposableController>(tag: tag);
@@ -210,7 +211,7 @@ void main() { @@ -210,7 +211,7 @@ void main() {
210 }); 211 });
211 212
212 test('a generic parent type', () async { 213 test('a generic parent type', () async {
213 - final tag = 'tag'; 214 + const tag = 'tag';
214 Get.put<MyController>(DisposableController(), permanent: true, tag: tag); 215 Get.put<MyController>(DisposableController(), permanent: true, tag: tag);
215 Get.replace<MyController>(Controller(), tag: tag); 216 Get.replace<MyController>(Controller(), tag: tag);
216 final instance = Get.find<MyController>(tag: tag); 217 final instance = Get.find<MyController>(tag: tag);
@@ -27,10 +27,10 @@ @@ -27,10 +27,10 @@
27 27
28 import 'package:flutter_test/flutter_test.dart'; 28 import 'package:flutter_test/flutter_test.dart';
29 29
30 -class _FunctionMatcher<T> extends CustomMatcher { 30 +class FunctionMatcher<T> extends CustomMatcher {
31 final Object Function(T value) _feature; 31 final Object Function(T value) _feature;
32 32
33 - _FunctionMatcher(String name, this._feature, matcher) 33 + FunctionMatcher(String name, this._feature, matcher)
34 : super('`$name`:', '`$name`', matcher); 34 : super('`$name`:', '`$name`', matcher);
35 35
36 @override 36 @override
@@ -39,15 +39,15 @@ class _FunctionMatcher<T> extends CustomMatcher { @@ -39,15 +39,15 @@ class _FunctionMatcher<T> extends CustomMatcher {
39 39
40 class HavingMatcher<T> implements TypeMatcher<T> { 40 class HavingMatcher<T> implements TypeMatcher<T> {
41 final TypeMatcher<T> _parent; 41 final TypeMatcher<T> _parent;
42 - final List<_FunctionMatcher<T>> _functionMatchers; 42 + final List<FunctionMatcher<T>> _functionMatchers;
43 43
44 HavingMatcher(TypeMatcher<T> parent, String description, 44 HavingMatcher(TypeMatcher<T> parent, String description,
45 Object Function(T) feature, dynamic matcher, 45 Object Function(T) feature, dynamic matcher,
46 - [Iterable<_FunctionMatcher<T>>? existing]) 46 + [Iterable<FunctionMatcher<T>>? existing])
47 : _parent = parent, 47 : _parent = parent,
48 _functionMatchers = [ 48 _functionMatchers = [
49 ...?existing, 49 ...?existing,
50 - _FunctionMatcher<T>(description, feature, matcher) 50 + FunctionMatcher<T>(description, feature, matcher)
51 ]; 51 ];
52 52
53 @override 53 @override
@@ -16,7 +16,7 @@ void main() { @@ -16,7 +16,7 @@ void main() {
16 expect('total_confirmed'.tr, 'Total Confirmed'); 16 expect('total_confirmed'.tr, 'Total Confirmed');
17 expect('total_deaths'.tr, 'Total Deaths'); 17 expect('total_deaths'.tr, 'Total Deaths');
18 18
19 - Get.updateLocale(Locale('pt', 'BR')); 19 + Get.updateLocale(const Locale('pt', 'BR'));
20 20
21 await tester.pumpAndSettle(); 21 await tester.pumpAndSettle();
22 22
@@ -24,7 +24,7 @@ void main() { @@ -24,7 +24,7 @@ void main() {
24 expect('total_confirmed'.tr, 'Total confirmado'); 24 expect('total_confirmed'.tr, 'Total confirmado');
25 expect('total_deaths'.tr, 'Total de mortes'); 25 expect('total_deaths'.tr, 'Total de mortes');
26 26
27 - Get.updateLocale(Locale('en', 'EN')); 27 + Get.updateLocale(const Locale('en', 'EN'));
28 28
29 await tester.pumpAndSettle(); 29 await tester.pumpAndSettle();
30 30
@@ -12,16 +12,14 @@ void main() { @@ -12,16 +12,14 @@ void main() {
12 12
13 await tester.pump(); 13 await tester.pump();
14 14
15 - Get.bottomSheet(Container(  
16 - child: Wrap(  
17 - children: <Widget>[  
18 - ListTile(  
19 - leading: Icon(Icons.music_note),  
20 - title: Text('Music'),  
21 - onTap: () {},  
22 - ),  
23 - ],  
24 - ), 15 + Get.bottomSheet(Wrap(
  16 + children: <Widget>[
  17 + ListTile(
  18 + leading: const Icon(Icons.music_note),
  19 + title: const Text('Music'),
  20 + onTap: () {},
  21 + ),
  22 + ],
25 )); 23 ));
26 24
27 await tester.pumpAndSettle(); 25 await tester.pumpAndSettle();
@@ -36,16 +34,14 @@ void main() { @@ -36,16 +34,14 @@ void main() {
36 34
37 await tester.pump(); 35 await tester.pump();
38 36
39 - Get.bottomSheet(Container(  
40 - child: Wrap(  
41 - children: <Widget>[  
42 - ListTile(  
43 - leading: Icon(Icons.music_note),  
44 - title: Text('Music'),  
45 - onTap: () {},  
46 - ),  
47 - ],  
48 - ), 37 + Get.bottomSheet(Wrap(
  38 + children: <Widget>[
  39 + ListTile(
  40 + leading: const Icon(Icons.music_note),
  41 + title: const Text('Music'),
  42 + onTap: () {},
  43 + ),
  44 + ],
49 )); 45 ));
50 46
51 await tester.pumpAndSettle(); 47 await tester.pumpAndSettle();
@@ -13,8 +13,7 @@ void main() { @@ -13,8 +13,7 @@ void main() {
13 await tester.pump(); 13 await tester.pump();
14 14
15 Get.defaultDialog( 15 Get.defaultDialog(
16 - onConfirm: () => print("Ok"),  
17 - middleText: "Dialog made in 3 lines of code"); 16 + onConfirm: () {}, middleText: "Dialog made in 3 lines of code");
18 17
19 await tester.pumpAndSettle(); 18 await tester.pumpAndSettle();
20 19
@@ -28,7 +27,7 @@ void main() { @@ -28,7 +27,7 @@ void main() {
28 27
29 await tester.pump(); 28 await tester.pump();
30 29
31 - Get.dialog(YourDialogWidget()); 30 + Get.dialog(const YourDialogWidget());
32 31
33 await tester.pumpAndSettle(); 32 await tester.pumpAndSettle();
34 33
@@ -42,7 +41,7 @@ void main() { @@ -42,7 +41,7 @@ void main() {
42 41
43 await tester.pump(); 42 await tester.pump();
44 43
45 - Get.dialog(YourDialogWidget()); 44 + Get.dialog(const YourDialogWidget());
46 await tester.pumpAndSettle(); 45 await tester.pumpAndSettle();
47 46
48 expect(find.byType(YourDialogWidget), findsOneWidget); 47 expect(find.byType(YourDialogWidget), findsOneWidget);
@@ -13,7 +13,7 @@ void main() { @@ -13,7 +13,7 @@ void main() {
13 expect(Get.isRegistered<Controller2>(), false); 13 expect(Get.isRegistered<Controller2>(), false);
14 expect(Get.isRegistered<Controller>(), false); 14 expect(Get.isRegistered<Controller>(), false);
15 15
16 - Get.to(() => First()); 16 + Get.to(() => const First());
17 17
18 await tester.pumpAndSettle(); 18 await tester.pumpAndSettle();
19 19
@@ -21,7 +21,7 @@ void main() { @@ -21,7 +21,7 @@ void main() {
21 21
22 expect(Get.isRegistered<Controller>(), true); 22 expect(Get.isRegistered<Controller>(), true);
23 23
24 - Get.to(() => Second()); 24 + Get.to(() => const Second());
25 25
26 await tester.pumpAndSettle(); 26 await tester.pumpAndSettle();
27 27
@@ -53,20 +53,24 @@ class Controller extends GetxController {} @@ -53,20 +53,24 @@ class Controller extends GetxController {}
53 class Controller2 extends GetxController {} 53 class Controller2 extends GetxController {}
54 54
55 class First extends StatelessWidget { 55 class First extends StatelessWidget {
  56 + const First({super.key});
  57 +
56 @override 58 @override
57 Widget build(BuildContext context) { 59 Widget build(BuildContext context) {
58 Get.put(Controller()); 60 Get.put(Controller());
59 - return Center( 61 + return const Center(
60 child: Text("first"), 62 child: Text("first"),
61 ); 63 );
62 } 64 }
63 } 65 }
64 66
65 class Second extends StatelessWidget { 67 class Second extends StatelessWidget {
  68 + const Second({super.key});
  69 +
66 @override 70 @override
67 Widget build(BuildContext context) { 71 Widget build(BuildContext context) {
68 Get.put(Controller2()); 72 Get.put(Controller2());
69 - return Center( 73 + return const Center(
70 child: Text("second"), 74 child: Text("second"),
71 ); 75 );
72 } 76 }
@@ -8,7 +8,7 @@ void main() { @@ -8,7 +8,7 @@ void main() {
8 testWidgets("Get.to navigates to provided route", (tester) async { 8 testWidgets("Get.to navigates to provided route", (tester) async {
9 await tester.pumpWidget(Wrapper(child: Container())); 9 await tester.pumpWidget(Wrapper(child: Container()));
10 10
11 - Get.to(() => FirstScreen()); 11 + Get.to(() => const FirstScreen());
12 12
13 await tester.pumpAndSettle(); 13 await tester.pumpAndSettle();
14 14
@@ -19,9 +19,9 @@ void main() { @@ -19,9 +19,9 @@ void main() {
19 await tester.pumpWidget(GetMaterialApp( 19 await tester.pumpWidget(GetMaterialApp(
20 initialRoute: '/first', 20 initialRoute: '/first',
21 getPages: [ 21 getPages: [
22 - GetPage(page: () => FirstScreen(), name: '/first'),  
23 - GetPage(page: () => SecondScreen(), name: '/second'),  
24 - GetPage(page: () => ThirdScreen(), name: '/third') 22 + GetPage(page: () => const FirstScreen(), name: '/first'),
  23 + GetPage(page: () => const SecondScreen(), name: '/second'),
  24 + GetPage(page: () => const ThirdScreen(), name: '/third')
25 ], 25 ],
26 )); 26 ));
27 27
@@ -35,11 +35,11 @@ void main() { @@ -35,11 +35,11 @@ void main() {
35 testWidgets("unknowroute", (tester) async { 35 testWidgets("unknowroute", (tester) async {
36 await tester.pumpWidget(GetMaterialApp( 36 await tester.pumpWidget(GetMaterialApp(
37 initialRoute: '/first', 37 initialRoute: '/first',
38 - unknownRoute: GetPage(name: '/404', page: () => Scaffold()), 38 + unknownRoute: GetPage(name: '/404', page: () => const Scaffold()),
39 getPages: [ 39 getPages: [
40 - GetPage(page: () => FirstScreen(), name: '/first'),  
41 - GetPage(page: () => SecondScreen(), name: '/second'),  
42 - GetPage(page: () => ThirdScreen(), name: '/third') 40 + GetPage(page: () => const FirstScreen(), name: '/first'),
  41 + GetPage(page: () => const SecondScreen(), name: '/second'),
  42 + GetPage(page: () => const ThirdScreen(), name: '/third')
43 ], 43 ],
44 )); 44 ));
45 45
@@ -52,10 +52,10 @@ void main() { @@ -52,10 +52,10 @@ void main() {
52 }); 52 });
53 53
54 testWidgets("Get.off navigates to provided route", (tester) async { 54 testWidgets("Get.off navigates to provided route", (tester) async {
55 - await tester.pumpWidget(Wrapper(child: FirstScreen())); 55 + await tester.pumpWidget(const Wrapper(child: FirstScreen()));
56 // await tester.pump(); 56 // await tester.pump();
57 57
58 - Get.off(() => SecondScreen()); 58 + Get.off(() => const SecondScreen());
59 59
60 await tester.pumpAndSettle(); 60 await tester.pumpAndSettle();
61 61
@@ -63,10 +63,10 @@ void main() { @@ -63,10 +63,10 @@ void main() {
63 }); 63 });
64 64
65 testWidgets("Get.off removes current route", (tester) async { 65 testWidgets("Get.off removes current route", (tester) async {
66 - await tester.pumpWidget(Wrapper(child: FirstScreen())); 66 + await tester.pumpWidget(const Wrapper(child: FirstScreen()));
67 await tester.pump(); 67 await tester.pump();
68 68
69 - Get.off(() => SecondScreen()); 69 + Get.off(() => const SecondScreen());
70 Get.back(); 70 Get.back();
71 71
72 await tester.pumpAndSettle(); 72 await tester.pumpAndSettle();
@@ -78,9 +78,9 @@ void main() { @@ -78,9 +78,9 @@ void main() {
78 await tester.pumpWidget(GetMaterialApp( 78 await tester.pumpWidget(GetMaterialApp(
79 initialRoute: '/first', 79 initialRoute: '/first',
80 getPages: [ 80 getPages: [
81 - GetPage(name: '/first', page: () => FirstScreen()),  
82 - GetPage(name: '/second', page: () => SecondScreen()),  
83 - GetPage(name: '/third', page: () => ThirdScreen()), 81 + GetPage(name: '/first', page: () => const FirstScreen()),
  82 + GetPage(name: '/second', page: () => const SecondScreen()),
  83 + GetPage(name: '/third', page: () => const ThirdScreen()),
84 ], 84 ],
85 )); 85 ));
86 86
@@ -97,9 +97,9 @@ void main() { @@ -97,9 +97,9 @@ void main() {
97 await tester.pumpWidget(GetMaterialApp( 97 await tester.pumpWidget(GetMaterialApp(
98 initialRoute: '/first', 98 initialRoute: '/first',
99 getPages: [ 99 getPages: [
100 - GetPage(name: '/first', page: () => FirstScreen()),  
101 - GetPage(name: '/second', page: () => SecondScreen()),  
102 - GetPage(name: '/third', page: () => ThirdScreen()), 100 + GetPage(name: '/first', page: () => const FirstScreen()),
  101 + GetPage(name: '/second', page: () => const SecondScreen()),
  102 + GetPage(name: '/third', page: () => const ThirdScreen()),
103 ], 103 ],
104 )); 104 ));
105 105
@@ -118,9 +118,9 @@ void main() { @@ -118,9 +118,9 @@ void main() {
118 await tester.pumpWidget(GetMaterialApp( 118 await tester.pumpWidget(GetMaterialApp(
119 initialRoute: '/first', 119 initialRoute: '/first',
120 getPages: [ 120 getPages: [
121 - GetPage(name: '/first', page: () => FirstScreen()),  
122 - GetPage(name: '/second', page: () => SecondScreen()),  
123 - GetPage(name: '/third', page: () => ThirdScreen()), 121 + GetPage(name: '/first', page: () => const FirstScreen()),
  122 + GetPage(name: '/second', page: () => const SecondScreen()),
  123 + GetPage(name: '/third', page: () => const ThirdScreen()),
124 ], 124 ],
125 )); 125 ));
126 126
@@ -138,10 +138,10 @@ void main() { @@ -138,10 +138,10 @@ void main() {
138 }); 138 });
139 139
140 testWidgets("Get.offAll navigates to provided route", (tester) async { 140 testWidgets("Get.offAll navigates to provided route", (tester) async {
141 - await tester.pumpWidget(Wrapper(child: FirstScreen())); 141 + await tester.pumpWidget(const Wrapper(child: FirstScreen()));
142 await tester.pump(); 142 await tester.pump();
143 143
144 - Get.offAll(() => SecondScreen()); 144 + Get.offAll(() => const SecondScreen());
145 145
146 await tester.pumpAndSettle(); 146 await tester.pumpAndSettle();
147 147
@@ -149,12 +149,12 @@ void main() { @@ -149,12 +149,12 @@ void main() {
149 }); 149 });
150 150
151 testWidgets("Get.offAll removes all previous routes", (tester) async { 151 testWidgets("Get.offAll removes all previous routes", (tester) async {
152 - await tester.pumpWidget(Wrapper(child: FirstScreen())); 152 + await tester.pumpWidget(const Wrapper(child: FirstScreen()));
153 await tester.pump(); 153 await tester.pump();
154 154
155 - Get.to(() => SecondScreen()); 155 + Get.to(() => const SecondScreen());
156 await tester.pumpAndSettle(); 156 await tester.pumpAndSettle();
157 - Get.offAll(() => ThirdScreen()); 157 + Get.offAll(() => const ThirdScreen());
158 await tester.pumpAndSettle(); 158 await tester.pumpAndSettle();
159 Get.back(); 159 Get.back();
160 await tester.pumpAndSettle(); 160 await tester.pumpAndSettle();
@@ -173,9 +173,9 @@ void main() { @@ -173,9 +173,9 @@ void main() {
173 await tester.pumpWidget(WrapperNamed( 173 await tester.pumpWidget(WrapperNamed(
174 initialRoute: '/first', 174 initialRoute: '/first',
175 namedRoutes: [ 175 namedRoutes: [
176 - GetPage(page: () => FirstScreen(), name: '/first'),  
177 - GetPage(page: () => SecondScreen(), name: '/second'),  
178 - GetPage(page: () => ThirdScreen(), name: '/third') 176 + GetPage(page: () => const FirstScreen(), name: '/first'),
  177 + GetPage(page: () => const SecondScreen(), name: '/second'),
  178 + GetPage(page: () => const ThirdScreen(), name: '/third')
179 ], 179 ],
180 )); 180 ));
181 181
@@ -192,9 +192,9 @@ void main() { @@ -192,9 +192,9 @@ void main() {
192 await tester.pumpWidget(WrapperNamed( 192 await tester.pumpWidget(WrapperNamed(
193 initialRoute: '/first', 193 initialRoute: '/first',
194 namedRoutes: [ 194 namedRoutes: [
195 - GetPage(page: () => FirstScreen(), name: '/first'),  
196 - GetPage(page: () => SecondScreen(), name: '/second'),  
197 - GetPage(page: () => ThirdScreen(), name: '/third') 195 + GetPage(page: () => const FirstScreen(), name: '/first'),
  196 + GetPage(page: () => const SecondScreen(), name: '/second'),
  197 + GetPage(page: () => const ThirdScreen(), name: '/third')
198 ], 198 ],
199 )); 199 ));
200 200
@@ -220,9 +220,9 @@ void main() { @@ -220,9 +220,9 @@ void main() {
220 await tester.pumpWidget(WrapperNamed( 220 await tester.pumpWidget(WrapperNamed(
221 initialRoute: '/first', 221 initialRoute: '/first',
222 namedRoutes: [ 222 namedRoutes: [
223 - GetPage(page: () => FirstScreen(), name: '/first'),  
224 - GetPage(page: () => SecondScreen(), name: '/second'),  
225 - GetPage(page: () => ThirdScreen(), name: '/third') 223 + GetPage(page: () => const FirstScreen(), name: '/first'),
  224 + GetPage(page: () => const SecondScreen(), name: '/second'),
  225 + GetPage(page: () => const ThirdScreen(), name: '/third')
226 ], 226 ],
227 )); 227 ));
228 228
@@ -237,9 +237,9 @@ void main() { @@ -237,9 +237,9 @@ void main() {
237 await tester.pumpWidget(WrapperNamed( 237 await tester.pumpWidget(WrapperNamed(
238 initialRoute: '/first', 238 initialRoute: '/first',
239 namedRoutes: [ 239 namedRoutes: [
240 - GetPage(page: () => FirstScreen(), name: '/first'),  
241 - GetPage(page: () => SecondScreen(), name: '/second'),  
242 - GetPage(page: () => ThirdScreen(), name: '/third') 240 + GetPage(page: () => const FirstScreen(), name: '/first'),
  241 + GetPage(page: () => const SecondScreen(), name: '/second'),
  242 + GetPage(page: () => const ThirdScreen(), name: '/third')
243 ], 243 ],
244 )); 244 ));
245 245
@@ -256,11 +256,12 @@ void main() { @@ -256,11 +256,12 @@ void main() {
256 testWidgets("Get.offUntil navigates to provided route", (tester) async { 256 testWidgets("Get.offUntil navigates to provided route", (tester) async {
257 await tester.pumpWidget(Wrapper(child: Container())); 257 await tester.pumpWidget(Wrapper(child: Container()));
258 258
259 - Get.to(() => FirstScreen()); 259 + Get.to(() => const FirstScreen());
260 260
261 await tester.pumpAndSettle(); 261 await tester.pumpAndSettle();
262 262
263 - Get.offUntil(() => ThirdScreen(), (route) => route.name == '/FirstScreen'); 263 + Get.offUntil(
  264 + () => const ThirdScreen(), (route) => route.name == '/FirstScreen');
264 265
265 await tester.pumpAndSettle(); 266 await tester.pumpAndSettle();
266 267
@@ -272,11 +273,12 @@ void main() { @@ -272,11 +273,12 @@ void main() {
272 (tester) async { 273 (tester) async {
273 await tester.pumpWidget(Wrapper(child: Container())); 274 await tester.pumpWidget(Wrapper(child: Container()));
274 275
275 - Get.to(() => FirstScreen()); 276 + Get.to(() => const FirstScreen());
276 await tester.pumpAndSettle(); 277 await tester.pumpAndSettle();
277 - Get.to(() => SecondScreen()); 278 + Get.to(() => const SecondScreen());
278 await tester.pumpAndSettle(); 279 await tester.pumpAndSettle();
279 - Get.offUntil(() => ThirdScreen(), (route) => route.name == '/FirstScreen'); 280 + Get.offUntil(
  281 + () => const ThirdScreen(), (route) => route.name == '/FirstScreen');
280 await tester.pumpAndSettle(); 282 await tester.pumpAndSettle();
281 Get.back(); 283 Get.back();
282 284
@@ -290,11 +292,12 @@ void main() { @@ -290,11 +292,12 @@ void main() {
290 (tester) async { 292 (tester) async {
291 await tester.pumpWidget(Wrapper(child: Container())); 293 await tester.pumpWidget(Wrapper(child: Container()));
292 294
293 - Get.to(() => FirstScreen()); 295 + Get.to(() => const FirstScreen());
294 await tester.pumpAndSettle(); 296 await tester.pumpAndSettle();
295 - Get.to(() => SecondScreen()); 297 + Get.to(() => const SecondScreen());
296 await tester.pumpAndSettle(); 298 await tester.pumpAndSettle();
297 - Get.offUntil(() => ThirdScreen(), (route) => route.name == '/FirstScreen'); 299 + Get.offUntil(
  300 + () => const ThirdScreen(), (route) => route.name == '/FirstScreen');
298 await tester.pumpAndSettle(); 301 await tester.pumpAndSettle();
299 Get.back(); 302 Get.back();
300 303
@@ -307,9 +310,9 @@ void main() { @@ -307,9 +310,9 @@ void main() {
307 await tester.pumpWidget(WrapperNamed( 310 await tester.pumpWidget(WrapperNamed(
308 initialRoute: '/first', 311 initialRoute: '/first',
309 namedRoutes: [ 312 namedRoutes: [
310 - GetPage(page: () => FirstScreen(), name: '/first'),  
311 - GetPage(page: () => SecondScreen(), name: '/second'),  
312 - GetPage(page: () => ThirdScreen(), name: '/third') 313 + GetPage(page: () => const FirstScreen(), name: '/first'),
  314 + GetPage(page: () => const SecondScreen(), name: '/second'),
  315 + GetPage(page: () => const ThirdScreen(), name: '/third')
313 ], 316 ],
314 )); 317 ));
315 318
@@ -326,9 +329,9 @@ void main() { @@ -326,9 +329,9 @@ void main() {
326 await tester.pumpWidget(WrapperNamed( 329 await tester.pumpWidget(WrapperNamed(
327 initialRoute: '/first', 330 initialRoute: '/first',
328 namedRoutes: [ 331 namedRoutes: [
329 - GetPage(page: () => FirstScreen(), name: '/first'),  
330 - GetPage(page: () => SecondScreen(), name: '/second'),  
331 - GetPage(page: () => ThirdScreen(), name: '/third') 332 + GetPage(page: () => const FirstScreen(), name: '/first'),
  333 + GetPage(page: () => const SecondScreen(), name: '/second'),
  334 + GetPage(page: () => const ThirdScreen(), name: '/third')
332 ], 335 ],
333 )); 336 ));
334 337
@@ -347,9 +350,9 @@ void main() { @@ -347,9 +350,9 @@ void main() {
347 await tester.pumpWidget(WrapperNamed( 350 await tester.pumpWidget(WrapperNamed(
348 initialRoute: '/first', 351 initialRoute: '/first',
349 namedRoutes: [ 352 namedRoutes: [
350 - GetPage(page: () => FirstScreen(), name: '/first'),  
351 - GetPage(page: () => SecondScreen(), name: '/second'),  
352 - GetPage(page: () => ThirdScreen(), name: '/third'), 353 + GetPage(page: () => const FirstScreen(), name: '/first'),
  354 + GetPage(page: () => const SecondScreen(), name: '/second'),
  355 + GetPage(page: () => const ThirdScreen(), name: '/third'),
353 ], 356 ],
354 )); 357 ));
355 358
@@ -367,17 +370,17 @@ void main() { @@ -367,17 +370,17 @@ void main() {
367 testWidgets("Get.back navigates back", (tester) async { 370 testWidgets("Get.back navigates back", (tester) async {
368 await tester.pumpWidget( 371 await tester.pumpWidget(
369 Wrapper( 372 Wrapper(
370 - child: Container(),  
371 defaultTransition: Transition.circularReveal, 373 defaultTransition: Transition.circularReveal,
  374 + child: Container(),
372 ), 375 ),
373 ); 376 );
374 377
375 // await tester.pump(); 378 // await tester.pump();
376 379
377 - Get.to(() => FirstScreen()); 380 + Get.to(() => const FirstScreen());
378 await tester.pumpAndSettle(); 381 await tester.pumpAndSettle();
379 382
380 - Get.to(() => SecondScreen()); 383 + Get.to(() => const SecondScreen());
381 await tester.pumpAndSettle(); 384 await tester.pumpAndSettle();
382 Get.back(); 385 Get.back();
383 386
@@ -391,16 +394,16 @@ void main() { @@ -391,16 +394,16 @@ void main() {
391 (tester) async { 394 (tester) async {
392 await tester.pumpWidget( 395 await tester.pumpWidget(
393 Wrapper( 396 Wrapper(
394 - child: Container(),  
395 defaultTransition: Transition.circularReveal, 397 defaultTransition: Transition.circularReveal,
  398 + child: Container(),
396 ), 399 ),
397 ); 400 );
398 401
399 // await tester.pump(); 402 // await tester.pump();
400 403
401 - Get.to(() => FirstScreen()); 404 + Get.to(() => const FirstScreen());
402 await tester.pumpAndSettle(); 405 await tester.pumpAndSettle();
403 - Get.to(() => SecondScreen()); 406 + Get.to(() => const SecondScreen());
404 await tester.pumpAndSettle(); 407 await tester.pumpAndSettle();
405 Get.snackbar('title', "message"); 408 Get.snackbar('title', "message");
406 await tester.pumpAndSettle(); 409 await tester.pumpAndSettle();
@@ -417,12 +420,12 @@ void main() { @@ -417,12 +420,12 @@ void main() {
417 testWidgets("fadeIn", (tester) async { 420 testWidgets("fadeIn", (tester) async {
418 await tester.pumpWidget( 421 await tester.pumpWidget(
419 Wrapper( 422 Wrapper(
420 - child: Container(),  
421 defaultTransition: Transition.fadeIn, 423 defaultTransition: Transition.fadeIn,
  424 + child: Container(),
422 ), 425 ),
423 ); 426 );
424 427
425 - Get.to(() => FirstScreen()); 428 + Get.to(() => const FirstScreen());
426 429
427 await tester.pumpAndSettle(); 430 await tester.pumpAndSettle();
428 431
@@ -432,12 +435,12 @@ void main() { @@ -432,12 +435,12 @@ void main() {
432 testWidgets("downToUp", (tester) async { 435 testWidgets("downToUp", (tester) async {
433 await tester.pumpWidget( 436 await tester.pumpWidget(
434 Wrapper( 437 Wrapper(
435 - child: Container(),  
436 defaultTransition: Transition.downToUp, 438 defaultTransition: Transition.downToUp,
  439 + child: Container(),
437 ), 440 ),
438 ); 441 );
439 442
440 - Get.to(() => FirstScreen()); 443 + Get.to(() => const FirstScreen());
441 444
442 await tester.pumpAndSettle(); 445 await tester.pumpAndSettle();
443 446
@@ -447,12 +450,12 @@ void main() { @@ -447,12 +450,12 @@ void main() {
447 testWidgets("fade", (tester) async { 450 testWidgets("fade", (tester) async {
448 await tester.pumpWidget( 451 await tester.pumpWidget(
449 Wrapper( 452 Wrapper(
450 - child: Container(),  
451 defaultTransition: Transition.fade, 453 defaultTransition: Transition.fade,
  454 + child: Container(),
452 ), 455 ),
453 ); 456 );
454 457
455 - Get.to(() => FirstScreen()); 458 + Get.to(() => const FirstScreen());
456 459
457 await tester.pumpAndSettle(); 460 await tester.pumpAndSettle();
458 461
@@ -462,12 +465,12 @@ void main() { @@ -462,12 +465,12 @@ void main() {
462 testWidgets("leftToRight", (tester) async { 465 testWidgets("leftToRight", (tester) async {
463 await tester.pumpWidget( 466 await tester.pumpWidget(
464 Wrapper( 467 Wrapper(
465 - child: Container(),  
466 defaultTransition: Transition.leftToRight, 468 defaultTransition: Transition.leftToRight,
  469 + child: Container(),
467 ), 470 ),
468 ); 471 );
469 472
470 - Get.to(() => FirstScreen()); 473 + Get.to(() => const FirstScreen());
471 474
472 await tester.pumpAndSettle(); 475 await tester.pumpAndSettle();
473 476
@@ -477,12 +480,12 @@ void main() { @@ -477,12 +480,12 @@ void main() {
477 testWidgets("leftToRightWithFade", (tester) async { 480 testWidgets("leftToRightWithFade", (tester) async {
478 await tester.pumpWidget( 481 await tester.pumpWidget(
479 Wrapper( 482 Wrapper(
480 - child: Container(),  
481 defaultTransition: Transition.leftToRightWithFade, 483 defaultTransition: Transition.leftToRightWithFade,
  484 + child: Container(),
482 ), 485 ),
483 ); 486 );
484 487
485 - Get.to(() => FirstScreen()); 488 + Get.to(() => const FirstScreen());
486 489
487 await tester.pumpAndSettle(); 490 await tester.pumpAndSettle();
488 491
@@ -492,12 +495,12 @@ void main() { @@ -492,12 +495,12 @@ void main() {
492 testWidgets("leftToRightWithFade", (tester) async { 495 testWidgets("leftToRightWithFade", (tester) async {
493 await tester.pumpWidget( 496 await tester.pumpWidget(
494 Wrapper( 497 Wrapper(
495 - child: Container(),  
496 defaultTransition: Transition.rightToLeft, 498 defaultTransition: Transition.rightToLeft,
  499 + child: Container(),
497 ), 500 ),
498 ); 501 );
499 502
500 - Get.to(() => FirstScreen()); 503 + Get.to(() => const FirstScreen());
501 504
502 await tester.pumpAndSettle(); 505 await tester.pumpAndSettle();
503 506
@@ -507,12 +510,12 @@ void main() { @@ -507,12 +510,12 @@ void main() {
507 testWidgets("defaultTransition", (tester) async { 510 testWidgets("defaultTransition", (tester) async {
508 await tester.pumpWidget( 511 await tester.pumpWidget(
509 Wrapper( 512 Wrapper(
510 - child: Container(),  
511 defaultTransition: Transition.rightToLeft, 513 defaultTransition: Transition.rightToLeft,
  514 + child: Container(),
512 ), 515 ),
513 ); 516 );
514 517
515 - Get.to(() => FirstScreen()); 518 + Get.to(() => const FirstScreen());
516 519
517 await tester.pumpAndSettle(); 520 await tester.pumpAndSettle();
518 521
@@ -522,12 +525,12 @@ void main() { @@ -522,12 +525,12 @@ void main() {
522 testWidgets("rightToLeftWithFade", (tester) async { 525 testWidgets("rightToLeftWithFade", (tester) async {
523 await tester.pumpWidget( 526 await tester.pumpWidget(
524 Wrapper( 527 Wrapper(
525 - child: Container(),  
526 defaultTransition: Transition.rightToLeftWithFade, 528 defaultTransition: Transition.rightToLeftWithFade,
  529 + child: Container(),
527 ), 530 ),
528 ); 531 );
529 532
530 - Get.to(() => FirstScreen()); 533 + Get.to(() => const FirstScreen());
531 534
532 await tester.pumpAndSettle(); 535 await tester.pumpAndSettle();
533 536
@@ -537,12 +540,12 @@ void main() { @@ -537,12 +540,12 @@ void main() {
537 testWidgets("cupertino", (tester) async { 540 testWidgets("cupertino", (tester) async {
538 await tester.pumpWidget( 541 await tester.pumpWidget(
539 Wrapper( 542 Wrapper(
540 - child: Container(),  
541 defaultTransition: Transition.cupertino, 543 defaultTransition: Transition.cupertino,
  544 + child: Container(),
542 ), 545 ),
543 ); 546 );
544 547
545 - Get.to(() => FirstScreen()); 548 + Get.to(() => const FirstScreen());
546 549
547 await tester.pumpAndSettle(); 550 await tester.pumpAndSettle();
548 551
@@ -552,12 +555,12 @@ void main() { @@ -552,12 +555,12 @@ void main() {
552 testWidgets("size", (tester) async { 555 testWidgets("size", (tester) async {
553 await tester.pumpWidget( 556 await tester.pumpWidget(
554 Wrapper( 557 Wrapper(
555 - child: Container(),  
556 defaultTransition: Transition.size, 558 defaultTransition: Transition.size,
  559 + child: Container(),
557 ), 560 ),
558 ); 561 );
559 562
560 - Get.to(() => FirstScreen()); 563 + Get.to(() => const FirstScreen());
561 564
562 await tester.pumpAndSettle(); 565 await tester.pumpAndSettle();
563 566
@@ -571,7 +574,8 @@ class FirstScreen extends StatelessWidget { @@ -571,7 +574,8 @@ class FirstScreen extends StatelessWidget {
571 574
572 @override 575 @override
573 Widget build(BuildContext context) { 576 Widget build(BuildContext context) {
574 - return Container(child: Text('FirstScreen')); 577 + // ignore: avoid_unnecessary_containers
  578 + return Container(child: const Text('FirstScreen'));
575 } 579 }
576 } 580 }
577 581
@@ -35,11 +35,14 @@ void main() { @@ -35,11 +35,14 @@ void main() {
35 initialRoute: '/', 35 initialRoute: '/',
36 getPages: [ 36 getPages: [
37 GetPage(name: '/', page: () => Container()), 37 GetPage(name: '/', page: () => Container()),
38 - GetPage(name: '/first', page: () => FirstScreen(), middlewares: [  
39 - RedirectMiddleware(),  
40 - ]),  
41 - GetPage(name: '/second', page: () => SecondScreen()),  
42 - GetPage(name: '/third', page: () => ThirdScreen()), 38 + GetPage(
  39 + name: '/first',
  40 + page: () => const FirstScreen(),
  41 + middlewares: [
  42 + RedirectMiddleware(),
  43 + ]),
  44 + GetPage(name: '/second', page: () => const SecondScreen()),
  45 + GetPage(name: '/third', page: () => const ThirdScreen()),
43 ], 46 ],
44 ), 47 ),
45 ); 48 );
@@ -47,7 +50,6 @@ void main() { @@ -47,7 +50,6 @@ void main() {
47 Get.toNamed('/first'); 50 Get.toNamed('/first');
48 51
49 await tester.pumpAndSettle(); 52 await tester.pumpAndSettle();
50 - print(Get.rootController.rootDelegate.currentConfiguration?.route?.name);  
51 expect(find.byType(SecondScreen), findsOneWidget); 53 expect(find.byType(SecondScreen), findsOneWidget);
52 }); 54 });
53 55
@@ -57,11 +59,14 @@ void main() { @@ -57,11 +59,14 @@ void main() {
57 initialRoute: '/', 59 initialRoute: '/',
58 getPages: [ 60 getPages: [
59 GetPage(name: '/', page: () => Container()), 61 GetPage(name: '/', page: () => Container()),
60 - GetPage(name: '/first', page: () => FirstScreen(), middlewares: [  
61 - RedirectMiddlewareNull(),  
62 - ]),  
63 - GetPage(name: '/second', page: () => SecondScreen()),  
64 - GetPage(name: '/third', page: () => ThirdScreen()), 62 + GetPage(
  63 + name: '/first',
  64 + page: () => const FirstScreen(),
  65 + middlewares: [
  66 + RedirectMiddlewareNull(),
  67 + ]),
  68 + GetPage(name: '/second', page: () => const SecondScreen()),
  69 + GetPage(name: '/third', page: () => const ThirdScreen()),
65 ], 70 ],
66 ), 71 ),
67 ); 72 );
@@ -71,7 +76,6 @@ void main() { @@ -71,7 +76,6 @@ void main() {
71 Get.toNamed('/first'); 76 Get.toNamed('/first');
72 77
73 await tester.pumpAndSettle(); 78 await tester.pumpAndSettle();
74 - print(Get.rootController.rootDelegate.currentConfiguration?.route?.name);  
75 expect(find.byType(FirstScreen), findsOneWidget); 79 expect(find.byType(FirstScreen), findsOneWidget);
76 }); 80 });
77 } 81 }
@@ -64,7 +64,7 @@ void main() { @@ -64,7 +64,7 @@ void main() {
64 tree.addRoute(pageTree); 64 tree.addRoute(pageTree);
65 65
66 // tree.addRoute(pageTree); 66 // tree.addRoute(pageTree);
67 - final searchRoute = '/city/work/office/pen'; 67 + const searchRoute = '/city/work/office/pen';
68 final match = tree.matchRoute(searchRoute); 68 final match = tree.matchRoute(searchRoute);
69 expect(match, isNotNull); 69 expect(match, isNotNull);
70 expect(match.route!.name, searchRoute); 70 expect(match.route!.name, searchRoute);
@@ -120,7 +120,7 @@ void main() { @@ -120,7 +120,7 @@ void main() {
120 // tree.addRoute(p); 120 // tree.addRoute(p);
121 // } 121 // }
122 122
123 - final searchRoute = '/city/work/office/pen'; 123 + const searchRoute = '/city/work/office/pen';
124 final match = tree.matchRoute(searchRoute); 124 final match = tree.matchRoute(searchRoute);
125 expect(match, isNotNull); 125 expect(match, isNotNull);
126 expect(match.route!.name, searchRoute); 126 expect(match.route!.name, searchRoute);
@@ -166,7 +166,6 @@ void main() { @@ -166,7 +166,6 @@ void main() {
166 testWidgets( 166 testWidgets(
167 'params in url by parameters', 167 'params in url by parameters',
168 (tester) async { 168 (tester) async {
169 - print("Iniciando test");  
170 await tester.pumpWidget(GetMaterialApp( 169 await tester.pumpWidget(GetMaterialApp(
171 initialRoute: '/first/juan', 170 initialRoute: '/first/juan',
172 getPages: [ 171 getPages: [
@@ -9,13 +9,14 @@ void main() { @@ -9,13 +9,14 @@ void main() {
9 GetMaterialApp( 9 GetMaterialApp(
10 popGesture: true, 10 popGesture: true,
11 home: ElevatedButton( 11 home: ElevatedButton(
12 - child: Text('Open Snackbar'), 12 + child: const Text('Open Snackbar'),
13 onPressed: () { 13 onPressed: () {
14 Get.snackbar( 14 Get.snackbar(
15 'title', 15 'title',
16 "message", 16 "message",
17 - duration: Duration(seconds: 1),  
18 - mainButton: TextButton(onPressed: () {}, child: Text('button')), 17 + duration: const Duration(seconds: 1),
  18 + mainButton:
  19 + TextButton(onPressed: () {}, child: const Text('button')),
19 isDismissible: false, 20 isDismissible: false,
20 ); 21 );
21 }, 22 },
@@ -38,18 +39,16 @@ void main() { @@ -38,18 +39,16 @@ void main() {
38 GetMaterialApp( 39 GetMaterialApp(
39 popGesture: true, 40 popGesture: true,
40 home: ElevatedButton( 41 home: ElevatedButton(
41 - child: Text('Open Snackbar'), 42 + child: const Text('Open Snackbar'),
42 onPressed: () { 43 onPressed: () {
43 Get.rawSnackbar( 44 Get.rawSnackbar(
44 title: 'title', 45 title: 'title',
45 message: "message", 46 message: "message",
46 - onTap: (_) {  
47 - print('snackbar tapped');  
48 - }, 47 + onTap: (_) {},
49 shouldIconPulse: true, 48 shouldIconPulse: true,
50 - icon: Icon(Icons.alarm), 49 + icon: const Icon(Icons.alarm),
51 showProgressIndicator: true, 50 showProgressIndicator: true,
52 - duration: Duration(seconds: 1), 51 + duration: const Duration(seconds: 1),
53 isDismissible: true, 52 isDismissible: true,
54 leftBarIndicatorColor: Colors.amber, 53 leftBarIndicatorColor: Colors.amber,
55 overlayBlur: 1.0, 54 overlayBlur: 1.0,
@@ -72,20 +71,20 @@ void main() { @@ -72,20 +71,20 @@ void main() {
72 }); 71 });
73 72
74 testWidgets("test snackbar queue", (tester) async { 73 testWidgets("test snackbar queue", (tester) async {
75 - final messageOne = Text('title'); 74 + const messageOne = Text('title');
76 75
77 - final messageTwo = Text('titleTwo'); 76 + const messageTwo = Text('titleTwo');
78 77
79 await tester.pumpWidget( 78 await tester.pumpWidget(
80 GetMaterialApp( 79 GetMaterialApp(
81 popGesture: true, 80 popGesture: true,
82 home: ElevatedButton( 81 home: ElevatedButton(
83 - child: Text('Open Snackbar'), 82 + child: const Text('Open Snackbar'),
84 onPressed: () { 83 onPressed: () {
85 Get.rawSnackbar( 84 Get.rawSnackbar(
86 - messageText: messageOne, duration: Duration(seconds: 1)); 85 + messageText: messageOne, duration: const Duration(seconds: 1));
87 Get.rawSnackbar( 86 Get.rawSnackbar(
88 - messageText: messageTwo, duration: Duration(seconds: 1)); 87 + messageText: messageTwo, duration: const Duration(seconds: 1));
89 }, 88 },
90 ), 89 ),
91 ), 90 ),
@@ -122,9 +121,9 @@ void main() { @@ -122,9 +121,9 @@ void main() {
122 GestureDetector( 121 GestureDetector(
123 key: snackBarTapTarget, 122 key: snackBarTapTarget,
124 onTap: () { 123 onTap: () {
125 - getBar = GetSnackBar( 124 + getBar = const GetSnackBar(
126 message: 'bar1', 125 message: 'bar1',
127 - duration: const Duration(seconds: 2), 126 + duration: Duration(seconds: 2),
128 isDismissible: true, 127 isDismissible: true,
129 dismissDirection: dismissDirection, 128 dismissDirection: dismissDirection,
130 ); 129 );
@@ -155,7 +154,7 @@ void main() { @@ -155,7 +154,7 @@ void main() {
155 await tester.pump(const Duration(milliseconds: 500)); 154 await tester.pump(const Duration(milliseconds: 500));
156 expect(find.byWidget(getBar), findsOneWidget); 155 expect(find.byWidget(getBar), findsOneWidget);
157 await tester.ensureVisible(find.byWidget(getBar)); 156 await tester.ensureVisible(find.byWidget(getBar));
158 - await tester.drag(find.byWidget(getBar), Offset(0.0, 50.0)); 157 + await tester.drag(find.byWidget(getBar), const Offset(0.0, 50.0));
159 await tester.pump(const Duration(milliseconds: 500)); 158 await tester.pump(const Duration(milliseconds: 500));
160 159
161 expect(Get.isSnackbarOpen, false); 160 expect(Get.isSnackbarOpen, false);
@@ -222,12 +221,12 @@ void main() { @@ -222,12 +221,12 @@ void main() {
222 }); 221 });
223 222
224 testWidgets("Get test actions and icon", (tester) async { 223 testWidgets("Get test actions and icon", (tester) async {
225 - final icon = Icon(Icons.alarm);  
226 - final action = TextButton(onPressed: () {}, child: Text('button')); 224 + const icon = Icon(Icons.alarm);
  225 + final action = TextButton(onPressed: () {}, child: const Text('button'));
227 226
228 late final GetSnackBar getBar; 227 late final GetSnackBar getBar;
229 228
230 - await tester.pumpWidget(GetMaterialApp(home: Scaffold())); 229 + await tester.pumpWidget(const GetMaterialApp(home: Scaffold()));
231 230
232 await tester.pump(); 231 await tester.pump();
233 232
@@ -57,8 +57,8 @@ class WrapperNamed extends StatelessWidget { @@ -57,8 +57,8 @@ class WrapperNamed extends StatelessWidget {
57 } 57 }
58 58
59 class WrapperTranslations extends Translations { 59 class WrapperTranslations extends Translations {
60 - static final fallbackLocale = Locale('en', 'US');  
61 - static Locale? get locale => Locale('en', 'US'); 60 + static const fallbackLocale = Locale('en', 'US');
  61 + static Locale? get locale => const Locale('en', 'US');
62 @override 62 @override
63 Map<String, Map<String, String>> get keys => { 63 Map<String, Map<String, String>> get keys => {
64 'en_US': { 64 'en_US': {
@@ -44,7 +44,7 @@ void main() { @@ -44,7 +44,7 @@ void main() {
44 debounce(count, (dynamic _) { 44 debounce(count, (dynamic _) {
45 // print(_); 45 // print(_);
46 result = _ as int?; 46 result = _ as int?;
47 - }, time: Duration(milliseconds: 100)); 47 + }, time: const Duration(milliseconds: 100));
48 48
49 count.value++; 49 count.value++;
50 count.value++; 50 count.value++;
@@ -52,7 +52,7 @@ void main() { @@ -52,7 +52,7 @@ void main() {
52 count.value++; 52 count.value++;
53 await Future.delayed(Duration.zero); 53 await Future.delayed(Duration.zero);
54 expect(-1, result); 54 expect(-1, result);
55 - await Future.delayed(Duration(milliseconds: 100)); 55 + await Future.delayed(const Duration(milliseconds: 100));
56 expect(4, result); 56 expect(4, result);
57 }); 57 });
58 58
@@ -60,23 +60,22 @@ void main() { @@ -60,23 +60,22 @@ void main() {
60 final count = 0.obs; 60 final count = 0.obs;
61 int? result = -1; 61 int? result = -1;
62 interval<int>(count, (v) { 62 interval<int>(count, (v) {
63 - print(v);  
64 result = v; 63 result = v;
65 - }, time: Duration(milliseconds: 100)); 64 + }, time: const Duration(milliseconds: 100));
66 65
67 count.value++; 66 count.value++;
68 await Future.delayed(Duration.zero); 67 await Future.delayed(Duration.zero);
69 - await Future.delayed(Duration(milliseconds: 100)); 68 + await Future.delayed(const Duration(milliseconds: 100));
70 expect(result, 1); 69 expect(result, 1);
71 count.value++; 70 count.value++;
72 count.value++; 71 count.value++;
73 count.value++; 72 count.value++;
74 await Future.delayed(Duration.zero); 73 await Future.delayed(Duration.zero);
75 - await Future.delayed(Duration(milliseconds: 100)); 74 + await Future.delayed(const Duration(milliseconds: 100));
76 expect(result, 2); 75 expect(result, 2);
77 count.value++; 76 count.value++;
78 await Future.delayed(Duration.zero); 77 await Future.delayed(Duration.zero);
79 - await Future.delayed(Duration(milliseconds: 100)); 78 + await Future.delayed(const Duration(milliseconds: 100));
80 expect(result, 5); 79 expect(result, 5);
81 }); 80 });
82 81
@@ -110,7 +109,7 @@ void main() { @@ -110,7 +109,7 @@ void main() {
110 reactiveInteger.call(3); 109 reactiveInteger.call(3);
111 reactiveInteger.call(3); 110 reactiveInteger.call(3);
112 111
113 - await Future.delayed(Duration(milliseconds: 100)); 112 + await Future.delayed(const Duration(milliseconds: 100));
114 expect(1, timesCalled); 113 expect(1, timesCalled);
115 }); 114 });
116 115
@@ -127,8 +126,8 @@ void main() { @@ -127,8 +126,8 @@ void main() {
127 reactiveInteger.trigger(2); 126 reactiveInteger.trigger(2);
128 reactiveInteger.trigger(3); 127 reactiveInteger.trigger(3);
129 128
130 - await Future.delayed(Duration(milliseconds: 100));  
131 - print(timesCalled); 129 + await Future.delayed(const Duration(milliseconds: 100));
  130 +
132 expect(3, timesCalled); 131 expect(3, timesCalled);
133 }); 132 });
134 133
@@ -146,7 +145,7 @@ void main() { @@ -146,7 +145,7 @@ void main() {
146 reactiveInteger.trigger(3); 145 reactiveInteger.trigger(3);
147 reactiveInteger.trigger(1); 146 reactiveInteger.trigger(1);
148 147
149 - await Future.delayed(Duration(milliseconds: 100)); 148 + await Future.delayed(const Duration(milliseconds: 100));
150 expect(4, timesCalled); 149 expect(4, timesCalled);
151 }); 150 });
152 151
@@ -34,11 +34,11 @@ void main() { @@ -34,11 +34,11 @@ void main() {
34 'Map: ${controller.map.length}', 34 'Map: ${controller.map.length}',
35 ), 35 ),
36 TextButton( 36 TextButton(
37 - child: Text("increment"), 37 + child: const Text("increment"),
38 onPressed: () => controller.increment(), 38 onPressed: () => controller.increment(),
39 ), 39 ),
40 TextButton( 40 TextButton(
41 - child: Text("increment2"), 41 + child: const Text("increment2"),
42 onPressed: () => controller.increment2(), 42 onPressed: () => controller.increment2(),
43 ) 43 )
44 ], 44 ],
@@ -18,8 +18,8 @@ void main() { @@ -18,8 +18,8 @@ void main() {
18 Text('Bool: ${controller.boolean.value}'), 18 Text('Bool: ${controller.boolean.value}'),
19 Text('Map: ${controller.map.length}'), 19 Text('Map: ${controller.map.length}'),
20 TextButton( 20 TextButton(
21 - child: Text("increment"),  
22 onPressed: controller.increment, 21 onPressed: controller.increment,
  22 + child: const Text("increment"),
23 ), 23 ),
24 Obx(() => Text('Obx: ${controller.map.length}')) 24 Obx(() => Text('Obx: ${controller.map.length}'))
25 ]), 25 ]),
@@ -31,7 +31,7 @@ void main() { @@ -31,7 +31,7 @@ void main() {
31 'Map: ${controller.map.length}', 31 'Map: ${controller.map.length}',
32 ), 32 ),
33 TextButton( 33 TextButton(
34 - child: Text("increment"), 34 + child: const Text("increment"),
35 onPressed: () => controller.increment(), 35 onPressed: () => controller.increment(),
36 ), 36 ),
37 GetX<Controller2>(builder: (controller) { 37 GetX<Controller2>(builder: (controller) {
@@ -15,11 +15,11 @@ void main() { @@ -15,11 +15,11 @@ void main() {
15 '${controller.counter}', 15 '${controller.counter}',
16 ), 16 ),
17 TextButton( 17 TextButton(
18 - child: Text("increment"), 18 + child: const Text("increment"),
19 onPressed: () => controller.increment(), 19 onPressed: () => controller.increment(),
20 ), 20 ),
21 TextButton( 21 TextButton(
22 - child: Text("incrementWithId"), 22 + child: const Text("incrementWithId"),
23 onPressed: () => controller.incrementWithId(), 23 onPressed: () => controller.incrementWithId(),
24 ), 24 ),
25 GetBuilder<Controller>( 25 GetBuilder<Controller>(
@@ -2,8 +2,44 @@ import 'package:flutter_test/flutter_test.dart'; @@ -2,8 +2,44 @@ import 'package:flutter_test/flutter_test.dart';
2 import 'package:get/utils.dart'; 2 import 'package:get/utils.dart';
3 3
4 void main() { 4 void main() {
5 - test('Test for toPrecision on Double', () {  
6 - var testVar = 5.4545454;  
7 - expect(testVar.toPrecision(2), equals(5.45)); 5 + group('DoubleExt', () {
  6 + test('toPrecision', () {
  7 + expect(3.14159.toPrecision(2), equals(3.14));
  8 + expect(3.14159.toPrecision(4), equals(3.1416));
  9 + expect(1.0.toPrecision(0), equals(1.0));
  10 + expect(123456789.123456789.toPrecision(4), equals(123456789.1235));
  11 + expect((-3.14159).toPrecision(2), equals(-3.14));
  12 + });
  13 +
  14 + test('milliseconds', () {
  15 + expect(1000.0.ms, equals(const Duration(milliseconds: 1000)));
  16 + expect(
  17 + 1.5.ms, equals(const Duration(milliseconds: 1, microseconds: 500)));
  18 + expect((-2000.0).ms, equals(const Duration(milliseconds: -2000)));
  19 + });
  20 +
  21 + test('seconds', () {
  22 + expect(60.0.seconds, equals(const Duration(seconds: 60)));
  23 + expect(1.5.seconds, equals(const Duration(milliseconds: 1500)));
  24 + expect((-120.0).seconds, equals(const Duration(seconds: -120)));
  25 + });
  26 +
  27 + test('minutes', () {
  28 + expect(2.5.minutes, equals(const Duration(minutes: 2, seconds: 30)));
  29 + expect(1.2.minutes, equals(const Duration(seconds: 72)));
  30 + expect((-3.0).minutes, equals(const Duration(minutes: -3)));
  31 + });
  32 +
  33 + test('hours', () {
  34 + expect(1.5.hours, equals(const Duration(hours: 1, minutes: 30)));
  35 + expect(0.25.hours, equals(const Duration(minutes: 15)));
  36 + expect((-2.0).hours, equals(const Duration(hours: -2)));
  37 + });
  38 +
  39 + test('days', () {
  40 + expect(1.5.days, equals(const Duration(days: 1, hours: 12)));
  41 + expect(0.25.days, equals(const Duration(hours: 6)));
  42 + expect((-3.0).days, equals(const Duration(days: -3)));
  43 + });
8 }); 44 });
9 } 45 }
  1 +import 'package:flutter_test/flutter_test.dart';
  2 +import 'package:get/get.dart';
  3 +
  4 +void main() {
  5 + group('DurationExt', () {
  6 + test('seconds', () {
  7 + expect(1.seconds, equals(const Duration(seconds: 1)));
  8 + expect(
  9 + 2.5.seconds, equals(const Duration(seconds: 2, milliseconds: 500)));
  10 + expect((-1).seconds, equals(const Duration(seconds: -1)));
  11 + });
  12 +
  13 + test('days', () {
  14 + expect(1.days, equals(const Duration(days: 1)));
  15 + expect((-1).days, equals(const Duration(days: -1)));
  16 + });
  17 +
  18 + test('hours', () {
  19 + expect(1.hours, equals(const Duration(hours: 1)));
  20 + expect((-1).hours, equals(const Duration(hours: -1)));
  21 + });
  22 +
  23 + test('minutes', () {
  24 + expect(1.minutes, equals(const Duration(minutes: 1)));
  25 + expect((-1).minutes, equals(const Duration(minutes: -1)));
  26 + });
  27 +
  28 + test('milliseconds', () {
  29 + expect(1.milliseconds, equals(const Duration(milliseconds: 1)));
  30 + expect((-1).milliseconds, equals(const Duration(milliseconds: -1)));
  31 + });
  32 +
  33 + test('microseconds', () {
  34 + expect(1.microseconds, equals(const Duration(microseconds: 1)));
  35 + expect((-1).microseconds, equals(const Duration(microseconds: -1)));
  36 + });
  37 +
  38 + test('ms', () {
  39 + expect(1.ms, equals(const Duration(milliseconds: 1)));
  40 + expect((-1).ms, equals(const Duration(milliseconds: -1)));
  41 + });
  42 + });
  43 +}
@@ -3,12 +3,12 @@ import 'package:get/utils.dart'; @@ -3,12 +3,12 @@ import 'package:get/utils.dart';
3 3
4 void main() { 4 void main() {
5 group('String extensions', () { 5 group('String extensions', () {
6 - final text = "oi";  
7 - final digit = "5";  
8 - final specialCaracters = "#\$!%@";  
9 - final alphaNumeric = "123asd";  
10 - final numbers = "123";  
11 - final letters = "foo"; 6 + const text = "oi";
  7 + const digit = "5";
  8 + const specialCaracters = "#\$!%@";
  9 + const alphaNumeric = "123asd";
  10 + const numbers = "123";
  11 + const letters = "foo";
12 // String notInitializedVar; 12 // String notInitializedVar;
13 13
14 test('var.isNum', () { 14 test('var.isNum', () {
@@ -66,27 +66,27 @@ void main() { @@ -66,27 +66,27 @@ void main() {
66 }); 66 });
67 67
68 test('var.isBool', () { 68 test('var.isBool', () {
69 - final trueString = 'true'; 69 + const trueString = 'true';
70 // expect(notInitializedVar.isBool, false); 70 // expect(notInitializedVar.isBool, false);
71 expect(letters.isBool, false); 71 expect(letters.isBool, false);
72 expect(trueString.isBool, true); 72 expect(trueString.isBool, true);
73 }); 73 });
74 74
75 test('var.isVectorFileName', () { 75 test('var.isVectorFileName', () {
76 - final path = "logo.svg";  
77 - final fullPath = "C:/Users/Getx/Documents/logo.svg"; 76 + const path = "logo.svg";
  77 + const fullPath = "C:/Users/Getx/Documents/logo.svg";
78 expect(path.isVectorFileName, true); 78 expect(path.isVectorFileName, true);
79 expect(fullPath.isVectorFileName, true); 79 expect(fullPath.isVectorFileName, true);
80 expect(alphaNumeric.isVectorFileName, false); 80 expect(alphaNumeric.isVectorFileName, false);
81 }); 81 });
82 82
83 test('var.isImageFileName', () { 83 test('var.isImageFileName', () {
84 - final jpgPath = "logo.jpg";  
85 - final jpegPath = "logo.jpeg";  
86 - final pngPath = "logo.png";  
87 - final gifPath = "logo.gif";  
88 - final bmpPath = "logo.bmp";  
89 - final svgPath = "logo.svg"; 84 + const jpgPath = "logo.jpg";
  85 + const jpegPath = "logo.jpeg";
  86 + const pngPath = "logo.png";
  87 + const gifPath = "logo.gif";
  88 + const bmpPath = "logo.bmp";
  89 + const svgPath = "logo.svg";
90 90
91 expect(jpgPath.isImageFileName, true); 91 expect(jpgPath.isImageFileName, true);
92 expect(jpegPath.isImageFileName, true); 92 expect(jpegPath.isImageFileName, true);
@@ -97,12 +97,12 @@ void main() { @@ -97,12 +97,12 @@ void main() {
97 }); 97 });
98 98
99 test('var.isAudioFileName', () { 99 test('var.isAudioFileName', () {
100 - final mp3Path = "logo.mp3";  
101 - final wavPath = "logo.wav";  
102 - final wmaPath = "logo.wma";  
103 - final amrPath = "logo.amr";  
104 - final oggPath = "logo.ogg";  
105 - final svgPath = "logo.svg"; 100 + const mp3Path = "logo.mp3";
  101 + const wavPath = "logo.wav";
  102 + const wmaPath = "logo.wma";
  103 + const amrPath = "logo.amr";
  104 + const oggPath = "logo.ogg";
  105 + const svgPath = "logo.svg";
106 106
107 expect(mp3Path.isAudioFileName, true); 107 expect(mp3Path.isAudioFileName, true);
108 expect(wavPath.isAudioFileName, true); 108 expect(wavPath.isAudioFileName, true);
@@ -113,14 +113,14 @@ void main() { @@ -113,14 +113,14 @@ void main() {
113 }); 113 });
114 114
115 test('var.isVideoFileName', () { 115 test('var.isVideoFileName', () {
116 - final mp4Path = "logo.mp4";  
117 - final aviPath = "logo.avi";  
118 - final wmvPath = "logo.wmv";  
119 - final rmvbPath = "logo.rmvb";  
120 - final mpgPath = "logo.mpg";  
121 - final mpegPath = "logo.mpeg";  
122 - final threegpPath = "logo.3gp";  
123 - final svgPath = "logo.svg"; 116 + const mp4Path = "logo.mp4";
  117 + const aviPath = "logo.avi";
  118 + const wmvPath = "logo.wmv";
  119 + const rmvbPath = "logo.rmvb";
  120 + const mpgPath = "logo.mpg";
  121 + const mpegPath = "logo.mpeg";
  122 + const threegpPath = "logo.3gp";
  123 + const svgPath = "logo.svg";
124 124
125 expect(mp4Path.isVideoFileName, true); 125 expect(mp4Path.isVideoFileName, true);
126 expect(aviPath.isVideoFileName, true); 126 expect(aviPath.isVideoFileName, true);
@@ -139,8 +139,8 @@ void main() { @@ -139,8 +139,8 @@ void main() {
139 }); 139 });
140 140
141 test('var.isDocumentFileName', () { 141 test('var.isDocumentFileName', () {
142 - final docPath = "file.doc";  
143 - final docxPath = "file.docx"; 142 + const docPath = "file.doc";
  143 + const docxPath = "file.docx";
144 144
145 expect(docPath.isDocumentFileName, true); 145 expect(docPath.isDocumentFileName, true);
146 expect(docxPath.isDocumentFileName, true); 146 expect(docxPath.isDocumentFileName, true);
@@ -148,8 +148,8 @@ void main() { @@ -148,8 +148,8 @@ void main() {
148 }); 148 });
149 149
150 test('var.isExcelFileName', () { 150 test('var.isExcelFileName', () {
151 - final xlsPath = "file.xls";  
152 - final xlsxPath = "file.xlsx"; 151 + const xlsPath = "file.xls";
  152 + const xlsxPath = "file.xlsx";
153 153
154 expect(xlsPath.isExcelFileName, true); 154 expect(xlsPath.isExcelFileName, true);
155 expect(xlsxPath.isExcelFileName, true); 155 expect(xlsxPath.isExcelFileName, true);
@@ -157,8 +157,8 @@ void main() { @@ -157,8 +157,8 @@ void main() {
157 }); 157 });
158 158
159 test('var.isPPTFileName', () { 159 test('var.isPPTFileName', () {
160 - final pptPath = "file.ppt";  
161 - final pptxPath = "file.pptx"; 160 + const pptPath = "file.ppt";
  161 + const pptxPath = "file.pptx";
162 162
163 expect(pptPath.isPPTFileName, true); 163 expect(pptPath.isPPTFileName, true);
164 expect(pptxPath.isPPTFileName, true); 164 expect(pptxPath.isPPTFileName, true);
@@ -166,20 +166,20 @@ void main() { @@ -166,20 +166,20 @@ void main() {
166 }); 166 });
167 167
168 test('var.isAPKFileName', () { 168 test('var.isAPKFileName', () {
169 - final apkPath = "file.apk"; 169 + const apkPath = "file.apk";
170 170
171 expect(apkPath.isAPKFileName, true); 171 expect(apkPath.isAPKFileName, true);
172 expect(alphaNumeric.isAPKFileName, false); 172 expect(alphaNumeric.isAPKFileName, false);
173 }); 173 });
174 174
175 test('var.isPDFFileName', () { 175 test('var.isPDFFileName', () {
176 - final pdfPath = "file.pdf"; 176 + const pdfPath = "file.pdf";
177 177
178 expect(pdfPath.isPDFFileName, true); 178 expect(pdfPath.isPDFFileName, true);
179 expect(alphaNumeric.isPDFFileName, false); 179 expect(alphaNumeric.isPDFFileName, false);
180 }); 180 });
181 test('var.isHTMLFileName', () { 181 test('var.isHTMLFileName', () {
182 - final htmlPath = "file.html"; 182 + const htmlPath = "file.html";
183 183
184 expect(htmlPath.isHTMLFileName, true); 184 expect(htmlPath.isHTMLFileName, true);
185 expect(alphaNumeric.isHTMLFileName, false); 185 expect(alphaNumeric.isHTMLFileName, false);
@@ -296,7 +296,7 @@ void main() { @@ -296,7 +296,7 @@ void main() {
296 expect(phone.isPhoneNumber, true); 296 expect(phone.isPhoneNumber, true);
297 } 297 }
298 298
299 - final bigRandomNumber = '168468468465241327987624987327987'; 299 + const bigRandomNumber = '168468468465241327987624987327987';
300 expect(bigRandomNumber.isPhoneNumber, false); 300 expect(bigRandomNumber.isPhoneNumber, false);
301 301
302 expect(alphaNumeric.isPhoneNumber, false); 302 expect(alphaNumeric.isPhoneNumber, false);
@@ -693,7 +693,7 @@ void main() { @@ -693,7 +693,7 @@ void main() {
693 }); 693 });
694 694
695 test('var.isCaseInsensitiveContains(string)', () { 695 test('var.isCaseInsensitiveContains(string)', () {
696 - final phrase = 'Back to Square One'; 696 + const phrase = 'Back to Square One';
697 697
698 expect(phrase.isCaseInsensitiveContains('to'), true); 698 expect(phrase.isCaseInsensitiveContains('to'), true);
699 expect(phrase.isCaseInsensitiveContains('square'), true); 699 expect(phrase.isCaseInsensitiveContains('square'), true);
@@ -702,7 +702,7 @@ void main() { @@ -702,7 +702,7 @@ void main() {
702 }); 702 });
703 703
704 test('var.isCaseInsensitiveContainsAny(string)', () { 704 test('var.isCaseInsensitiveContainsAny(string)', () {
705 - final phrase = 'Back to Square One'; 705 + const phrase = 'Back to Square One';
706 706
707 expect(phrase.isCaseInsensitiveContainsAny('to'), true); 707 expect(phrase.isCaseInsensitiveContainsAny('to'), true);
708 expect(phrase.isCaseInsensitiveContainsAny('square'), true); 708 expect(phrase.isCaseInsensitiveContainsAny('square'), true);
@@ -3,16 +3,18 @@ import 'package:flutter_test/flutter_test.dart'; @@ -3,16 +3,18 @@ import 'package:flutter_test/flutter_test.dart';
3 import 'package:get/utils.dart'; 3 import 'package:get/utils.dart';
4 4
5 class Foo extends StatelessWidget { 5 class Foo extends StatelessWidget {
  6 + const Foo({super.key});
  7 +
6 @override 8 @override
7 Widget build(BuildContext context) { 9 Widget build(BuildContext context) {
8 - return SizedBox.shrink(); 10 + return const SizedBox.shrink();
9 } 11 }
10 } 12 }
11 13
12 void main() { 14 void main() {
13 group('Group test for PaddingX Extension', () { 15 group('Group test for PaddingX Extension', () {
14 testWidgets('Test of paddingAll', (tester) async { 16 testWidgets('Test of paddingAll', (tester) async {
15 - Widget containerTest = Foo(); 17 + Widget containerTest = const Foo();
16 18
17 expect(find.byType(Padding), findsNothing); 19 expect(find.byType(Padding), findsNothing);
18 20
@@ -22,7 +24,7 @@ void main() { @@ -22,7 +24,7 @@ void main() {
22 }); 24 });
23 25
24 testWidgets('Test of paddingOnly', (tester) async { 26 testWidgets('Test of paddingOnly', (tester) async {
25 - Widget containerTest = Foo(); 27 + Widget containerTest = const Foo();
26 28
27 expect(find.byType(Padding), findsNothing); 29 expect(find.byType(Padding), findsNothing);
28 30
@@ -32,7 +34,7 @@ void main() { @@ -32,7 +34,7 @@ void main() {
32 }); 34 });
33 35
34 testWidgets('Test of paddingSymmetric', (tester) async { 36 testWidgets('Test of paddingSymmetric', (tester) async {
35 - Widget containerTest = Foo(); 37 + Widget containerTest = const Foo();
36 38
37 expect(find.byType(Padding), findsNothing); 39 expect(find.byType(Padding), findsNothing);
38 40
@@ -42,7 +44,7 @@ void main() { @@ -42,7 +44,7 @@ void main() {
42 }); 44 });
43 45
44 testWidgets('Test of paddingZero', (tester) async { 46 testWidgets('Test of paddingZero', (tester) async {
45 - Widget containerTest = Foo(); 47 + Widget containerTest = const Foo();
46 48
47 expect(find.byType(Padding), findsNothing); 49 expect(find.byType(Padding), findsNothing);
48 50
@@ -54,7 +56,7 @@ void main() { @@ -54,7 +56,7 @@ void main() {
54 56
55 group('Group test for MarginX Extension', () { 57 group('Group test for MarginX Extension', () {
56 testWidgets('Test of marginAll', (tester) async { 58 testWidgets('Test of marginAll', (tester) async {
57 - Widget containerTest = Foo(); 59 + Widget containerTest = const Foo();
58 60
59 await tester.pumpWidget(containerTest.marginAll(16)); 61 await tester.pumpWidget(containerTest.marginAll(16));
60 62
@@ -62,7 +64,7 @@ void main() { @@ -62,7 +64,7 @@ void main() {
62 }); 64 });
63 65
64 testWidgets('Test of marginOnly', (tester) async { 66 testWidgets('Test of marginOnly', (tester) async {
65 - Widget containerTest = Foo(); 67 + Widget containerTest = const Foo();
66 68
67 await tester.pumpWidget(containerTest.marginOnly(top: 16)); 69 await tester.pumpWidget(containerTest.marginOnly(top: 16));
68 70
@@ -70,7 +72,7 @@ void main() { @@ -70,7 +72,7 @@ void main() {
70 }); 72 });
71 73
72 testWidgets('Test of marginSymmetric', (tester) async { 74 testWidgets('Test of marginSymmetric', (tester) async {
73 - Widget containerTest = Foo(); 75 + Widget containerTest = const Foo();
74 76
75 await tester.pumpWidget(containerTest.marginSymmetric(vertical: 16)); 77 await tester.pumpWidget(containerTest.marginSymmetric(vertical: 16));
76 78
@@ -78,7 +80,7 @@ void main() { @@ -78,7 +80,7 @@ void main() {
78 }); 80 });
79 81
80 testWidgets('Test of marginZero', (tester) async { 82 testWidgets('Test of marginZero', (tester) async {
81 - Widget containerTest = Foo(); 83 + Widget containerTest = const Foo();
82 84
83 await tester.pumpWidget(containerTest.marginZero); 85 await tester.pumpWidget(containerTest.marginZero);
84 86
@@ -8,7 +8,7 @@ class TestClass { @@ -8,7 +8,7 @@ class TestClass {
8 class EmptyClass {} 8 class EmptyClass {}
9 9
10 void main() { 10 void main() {
11 - dynamic _id(dynamic e) => e; 11 + dynamic newId(dynamic e) => e;
12 12
13 test('null isNullOrBlank should be true for null', () { 13 test('null isNullOrBlank should be true for null', () {
14 expect(GetUtils.isNullOrBlank(null), true); 14 expect(GetUtils.isNullOrBlank(null), true);
@@ -38,8 +38,8 @@ void main() { @@ -38,8 +38,8 @@ void main() {
38 }); 38 });
39 39
40 test('isNullOrBlank should validate iterables', () { 40 test('isNullOrBlank should validate iterables', () {
41 - expect(GetUtils.isNullOrBlank([].map(_id)), true);  
42 - expect(GetUtils.isNullOrBlank([1].map(_id)), false); 41 + expect(GetUtils.isNullOrBlank([].map(newId)), true);
  42 + expect(GetUtils.isNullOrBlank([1].map(newId)), false);
43 }); 43 });
44 44
45 test('isNullOrBlank should validate lists', () { 45 test('isNullOrBlank should validate lists', () {
@@ -67,8 +67,8 @@ void main() { @@ -67,8 +67,8 @@ void main() {
67 group('GetUtils.isLength* functions', () { 67 group('GetUtils.isLength* functions', () {
68 test('isLengthEqualTo should validate iterable lengths', () { 68 test('isLengthEqualTo should validate iterable lengths', () {
69 // iterables should cover list and set 69 // iterables should cover list and set
70 - expect(GetUtils.isLengthEqualTo([].map(_id), 0), true);  
71 - expect(GetUtils.isLengthEqualTo([1, 2].map(_id), 2), true); 70 + expect(GetUtils.isLengthEqualTo([].map(newId), 0), true);
  71 + expect(GetUtils.isLengthEqualTo([1, 2].map(newId), 2), true);
72 72
73 expect(GetUtils.isLengthEqualTo({}, 0), true); 73 expect(GetUtils.isLengthEqualTo({}, 0), true);
74 expect(GetUtils.isLengthEqualTo({1: 1, 2: 1}, 2), true); 74 expect(GetUtils.isLengthEqualTo({1: 1, 2: 1}, 2), true);
@@ -81,9 +81,9 @@ void main() { @@ -81,9 +81,9 @@ void main() {
81 81
82 test('isLengthGreaterOrEqual should validate lengths', () { 82 test('isLengthGreaterOrEqual should validate lengths', () {
83 // iterables should cover list and set 83 // iterables should cover list and set
84 - expect(GetUtils.isLengthGreaterOrEqual([].map(_id), 0), true);  
85 - expect(GetUtils.isLengthGreaterOrEqual([1, 2].map(_id), 2), true);  
86 - expect(GetUtils.isLengthGreaterOrEqual([1, 2].map(_id), 1), true); 84 + expect(GetUtils.isLengthGreaterOrEqual([].map(newId), 0), true);
  85 + expect(GetUtils.isLengthGreaterOrEqual([1, 2].map(newId), 2), true);
  86 + expect(GetUtils.isLengthGreaterOrEqual([1, 2].map(newId), 1), true);
87 87
88 expect(GetUtils.isLengthGreaterOrEqual({}, 0), true); 88 expect(GetUtils.isLengthGreaterOrEqual({}, 0), true);
89 expect(GetUtils.isLengthGreaterOrEqual({1: 1, 2: 1}, 1), true); 89 expect(GetUtils.isLengthGreaterOrEqual({1: 1, 2: 1}, 1), true);
@@ -97,9 +97,9 @@ void main() { @@ -97,9 +97,9 @@ void main() {
97 97
98 test('isLengthLessOrEqual should validate lengths', () { 98 test('isLengthLessOrEqual should validate lengths', () {
99 // iterables should cover list and set 99 // iterables should cover list and set
100 - expect(GetUtils.isLengthLessOrEqual([].map(_id), 0), true);  
101 - expect(GetUtils.isLengthLessOrEqual([1, 2].map(_id), 2), true);  
102 - expect(GetUtils.isLengthLessOrEqual([1, 2].map(_id), 1), false); 100 + expect(GetUtils.isLengthLessOrEqual([].map(newId), 0), true);
  101 + expect(GetUtils.isLengthLessOrEqual([1, 2].map(newId), 2), true);
  102 + expect(GetUtils.isLengthLessOrEqual([1, 2].map(newId), 1), false);
103 103
104 expect(GetUtils.isLengthLessOrEqual({}, 0), true); 104 expect(GetUtils.isLengthLessOrEqual({}, 0), true);
105 expect(GetUtils.isLengthLessOrEqual({1: 1, 2: 1}, 1), false); 105 expect(GetUtils.isLengthLessOrEqual({1: 1, 2: 1}, 1), false);
1 @TestOn('browser') 1 @TestOn('browser')
2 import 'dart:io'; 2 import 'dart:io';
  3 +
3 import 'package:flutter_test/flutter_test.dart'; 4 import 'package:flutter_test/flutter_test.dart';
4 import 'package:get/get.dart'; 5 import 'package:get/get.dart';
5 6