diff --git a/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistance_List_of_Object.dart b/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistance_List_of_Object.dart index 1f3c4577..6ae1fb20 100644 --- a/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistance_List_of_Object.dart +++ b/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistance_List_of_Object.dart @@ -107,6 +107,7 @@ class CounterViewModel { // set the state mutably _counter.setState((s) { s[index] = CounterModel(s[index].value + 1); + return null; }); } } diff --git a/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistence_List_of_Object.dart b/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistence_List_of_Object.dart index 374a5ab3..a461d645 100644 --- a/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistence_List_of_Object.dart +++ b/examples/ex001_00_sync_global_and_local_state/lib/ex_013_00_state_persistence_List_of_Object.dart @@ -107,6 +107,7 @@ class CounterViewModel { // set the state mutably _counter.setState((s) { s[index] = CounterModel(s[index].value + 1); + return null; }); } } diff --git a/examples/ex001_00_sync_global_and_local_state/lib/ex_014_00_state_interceptor.dart b/examples/ex001_00_sync_global_and_local_state/lib/ex_014_00_state_interceptor.dart index 3ad1151b..533a3e76 100644 --- a/examples/ex001_00_sync_global_and_local_state/lib/ex_014_00_state_interceptor.dart +++ b/examples/ex001_00_sync_global_and_local_state/lib/ex_014_00_state_interceptor.dart @@ -20,6 +20,7 @@ enum WeatherCondition { snowy, unknown, } + const defaultColor = Color(0xFF2196F3); // Set primary color theme depending on the weather condition @@ -84,6 +85,7 @@ class WeatherService { ), ); } + return null; }, ); Weather? get weather => weatherRM.state; diff --git a/examples/ex001_00_sync_global_and_local_state/pubspec.yaml b/examples/ex001_00_sync_global_and_local_state/pubspec.yaml index 1e57213d..c54198c1 100644 --- a/examples/ex001_00_sync_global_and_local_state/pubspec.yaml +++ b/examples/ex001_00_sync_global_and_local_state/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.15.0 <3.0.0" + sdk: ">=2.15.0 <3.0.0" # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/examples/ex002_00_async_global_and_local_state/lib/ex_002_00_async_counter_app_with_state_rebuilder_full_api.dart b/examples/ex002_00_async_global_and_local_state/lib/ex_002_00_async_counter_app_with_state_rebuilder_full_api.dart index 987c6cdf..6cda4d4f 100644 --- a/examples/ex002_00_async_global_and_local_state/lib/ex_002_00_async_counter_app_with_state_rebuilder_full_api.dart +++ b/examples/ex002_00_async_global_and_local_state/lib/ex_002_00_async_counter_app_with_state_rebuilder_full_api.dart @@ -72,6 +72,7 @@ class CounterViewModel { // if the next state will be the waiting or the error state, // just return the current sate if (!nextSnap.hasData) return currentSnap; + return null; // // This is the right place to do some state validation before mutation }, diff --git a/examples/ex002_00_async_global_and_local_state/lib/ex_007_00_plugins_intialization.dart b/examples/ex002_00_async_global_and_local_state/lib/ex_007_00_plugins_intialization.dart index 084523a0..8abf3045 100644 --- a/examples/ex002_00_async_global_and_local_state/lib/ex_007_00_plugins_intialization.dart +++ b/examples/ex002_00_async_global_and_local_state/lib/ex_007_00_plugins_intialization.dart @@ -26,7 +26,7 @@ class SemBastLocalStorage { } Future write(String key, T value) async { - return store.record('key').put(db, value); + await store.record('key').put(db, value); } Future read(String key) async { diff --git a/examples/ex002_00_async_global_and_local_state/lib/ex_016_00_pessimistic_update.dart b/examples/ex002_00_async_global_and_local_state/lib/ex_016_00_pessimistic_update.dart index e3695727..44c7ce2f 100644 --- a/examples/ex002_00_async_global_and_local_state/lib/ex_016_00_pessimistic_update.dart +++ b/examples/ex002_00_async_global_and_local_state/lib/ex_016_00_pessimistic_update.dart @@ -64,6 +64,7 @@ class TodosViewModel { } // in all other cases set the _isWaitingForAddTodo to false _isWaitingForAddTodo.state = false; + return null; }, ); } diff --git a/examples/ex002_00_async_global_and_local_state/lib/ex_017_00_optimistic_update.dart b/examples/ex002_00_async_global_and_local_state/lib/ex_017_00_optimistic_update.dart index c672edc4..061aa37e 100644 --- a/examples/ex002_00_async_global_and_local_state/lib/ex_017_00_optimistic_update.dart +++ b/examples/ex002_00_async_global_and_local_state/lib/ex_017_00_optimistic_update.dart @@ -65,6 +65,7 @@ class TodosViewModel { data: next.state.where((todo) => todo.id != todoToAdd.id).toList(), ); } + return null; }, ); } diff --git a/examples/ex004_00_navigation/lib/ex04_to_deeply_1.dart b/examples/ex004_00_navigation/lib/ex04_to_deeply_1.dart index 326df1fd..ab0c3d09 100644 --- a/examples/ex004_00_navigation/lib/ex04_to_deeply_1.dart +++ b/examples/ex004_00_navigation/lib/ex04_to_deeply_1.dart @@ -7,7 +7,7 @@ void main() { runApp(const MyApp()); } -final navigator = RM.injectNavigator( +final InjectedNavigator navigator = RM.injectNavigator( builder: (routerOutlet) { return Builder( builder: (context) { diff --git a/examples/ex004_00_navigation/lib/ex07_on_navigate_cyclic_redirect.dart b/examples/ex004_00_navigation/lib/ex07_on_navigate_cyclic_redirect.dart index 9d5ea2f6..559a5cd7 100644 --- a/examples/ex004_00_navigation/lib/ex07_on_navigate_cyclic_redirect.dart +++ b/examples/ex004_00_navigation/lib/ex07_on_navigate_cyclic_redirect.dart @@ -25,6 +25,7 @@ final navigator = RM.injectNavigator( if (location == '/page4') { return data.redirectTo('/page5'); } + return null; }, ); diff --git a/examples/ex004_00_navigation/lib/ex08_on_navigate_redirection_from.dart b/examples/ex004_00_navigation/lib/ex08_on_navigate_redirection_from.dart index e433d76a..956cd4be 100644 --- a/examples/ex004_00_navigation/lib/ex08_on_navigate_redirection_from.dart +++ b/examples/ex004_00_navigation/lib/ex08_on_navigate_redirection_from.dart @@ -42,6 +42,7 @@ final navigator = RM.injectNavigator( if (location == '/page4' && data.queryParams['q'] == 'NaN') { return data.redirectTo('/redirect-page'); } + return null; }, ); diff --git a/examples/ex004_00_navigation/lib/ex09_on_navigate_signin.dart b/examples/ex004_00_navigation/lib/ex09_on_navigate_signin.dart index 6e8f2227..e82a9585 100644 --- a/examples/ex004_00_navigation/lib/ex09_on_navigate_signin.dart +++ b/examples/ex004_00_navigation/lib/ex09_on_navigate_signin.dart @@ -34,6 +34,7 @@ final navigator = RM.injectNavigator( // Redirect the user to the home page return data.redirectTo('/'); } + return null; }, ); diff --git a/examples/ex004_00_navigation/lib/ex10_on_global_back_navigation.dart b/examples/ex004_00_navigation/lib/ex10_on_global_back_navigation.dart index 9144649e..ee8dca26 100644 --- a/examples/ex004_00_navigation/lib/ex10_on_global_back_navigation.dart +++ b/examples/ex004_00_navigation/lib/ex10_on_global_back_navigation.dart @@ -29,6 +29,7 @@ final navigator = RM.injectNavigator( ); return false; } + return null; }, ); diff --git a/examples/ex004_00_navigation/lib/ex10_on_local_back_navigation.dart b/examples/ex004_00_navigation/lib/ex10_on_local_back_navigation.dart index a61284fe..cc7f1715 100644 --- a/examples/ex004_00_navigation/lib/ex10_on_local_back_navigation.dart +++ b/examples/ex004_00_navigation/lib/ex10_on_local_back_navigation.dart @@ -22,6 +22,7 @@ final navigator = RM.injectNavigator( ); return false; } + return null; }, ); diff --git a/examples/ex004_00_navigation/lib/ex16_nested_route.dart b/examples/ex004_00_navigation/lib/ex16_nested_route.dart index 051e0778..9d4afd49 100644 --- a/examples/ex004_00_navigation/lib/ex16_nested_route.dart +++ b/examples/ex004_00_navigation/lib/ex16_nested_route.dart @@ -60,6 +60,7 @@ final navigator = RM.injectNavigator( postponeToNextFrame: true, ); } + return null; }, ); diff --git a/examples/ex004_00_navigation/lib/ex18_books_app.dart b/examples/ex004_00_navigation/lib/ex18_books_app.dart index 25be01f4..29526717 100644 --- a/examples/ex004_00_navigation/lib/ex18_books_app.dart +++ b/examples/ex004_00_navigation/lib/ex18_books_app.dart @@ -74,6 +74,7 @@ final navigator = RM.injectNavigator( else if (signedIn && signingIn) { return routeData.redirectTo('/books'); } + return null; }); class App extends TopStatelessWidget { diff --git a/examples/ex004_00_navigation/test/ex16_nested_route2_test.dart b/examples/ex004_00_navigation/test/ex16_nested_route2_test.dart index 2f277587..5d0774d9 100644 --- a/examples/ex004_00_navigation/test/ex16_nested_route2_test.dart +++ b/examples/ex004_00_navigation/test/ex16_nested_route2_test.dart @@ -1,5 +1,3 @@ -import 'dart:math'; - import 'package:ex_006_5_navigation/ex16_nested_route.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_1.png b/examples/ex004_00_navigation/test/golden_files/ex04_1.png index 8457f378..6dd599ac 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_1.png and b/examples/ex004_00_navigation/test/golden_files/ex04_1.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_10.png b/examples/ex004_00_navigation/test/golden_files/ex04_10.png index f0063548..0482023a 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_10.png and b/examples/ex004_00_navigation/test/golden_files/ex04_10.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_11.png b/examples/ex004_00_navigation/test/golden_files/ex04_11.png index f20ff17d..4084ab11 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_11.png and b/examples/ex004_00_navigation/test/golden_files/ex04_11.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_2.png b/examples/ex004_00_navigation/test/golden_files/ex04_2.png index f0063548..0482023a 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_2.png and b/examples/ex004_00_navigation/test/golden_files/ex04_2.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_3.png b/examples/ex004_00_navigation/test/golden_files/ex04_3.png index da7f80ce..91eeb688 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_3.png and b/examples/ex004_00_navigation/test/golden_files/ex04_3.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_4.png b/examples/ex004_00_navigation/test/golden_files/ex04_4.png index 1905e98f..6945715e 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_4.png and b/examples/ex004_00_navigation/test/golden_files/ex04_4.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_5.png b/examples/ex004_00_navigation/test/golden_files/ex04_5.png index fb6951aa..848f3b70 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_5.png and b/examples/ex004_00_navigation/test/golden_files/ex04_5.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_6.png b/examples/ex004_00_navigation/test/golden_files/ex04_6.png index 6cd313c8..f0d08425 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_6.png and b/examples/ex004_00_navigation/test/golden_files/ex04_6.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_7.png b/examples/ex004_00_navigation/test/golden_files/ex04_7.png index 8457f378..6dd599ac 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_7.png and b/examples/ex004_00_navigation/test/golden_files/ex04_7.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_8.png b/examples/ex004_00_navigation/test/golden_files/ex04_8.png index 366520ac..bfca1724 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_8.png and b/examples/ex004_00_navigation/test/golden_files/ex04_8.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex04_9.png b/examples/ex004_00_navigation/test/golden_files/ex04_9.png index c19005ab..e12d2f5e 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex04_9.png and b/examples/ex004_00_navigation/test/golden_files/ex04_9.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_1.png b/examples/ex004_00_navigation/test/golden_files/ex05_1.png index cef288ba..45a53c07 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_1.png and b/examples/ex004_00_navigation/test/golden_files/ex05_1.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_10.png b/examples/ex004_00_navigation/test/golden_files/ex05_10.png index abfffc32..e1173cb4 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_10.png and b/examples/ex004_00_navigation/test/golden_files/ex05_10.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_11.png b/examples/ex004_00_navigation/test/golden_files/ex05_11.png index 087af58a..6aee2beb 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_11.png and b/examples/ex004_00_navigation/test/golden_files/ex05_11.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_12.png b/examples/ex004_00_navigation/test/golden_files/ex05_12.png index b8426884..576b6a95 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_12.png and b/examples/ex004_00_navigation/test/golden_files/ex05_12.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_2.png b/examples/ex004_00_navigation/test/golden_files/ex05_2.png index ebbef7df..d3f34cca 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_2.png and b/examples/ex004_00_navigation/test/golden_files/ex05_2.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_3.png b/examples/ex004_00_navigation/test/golden_files/ex05_3.png index 087af58a..6aee2beb 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_3.png and b/examples/ex004_00_navigation/test/golden_files/ex05_3.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_4.png b/examples/ex004_00_navigation/test/golden_files/ex05_4.png index ace761df..4e463f27 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_4.png and b/examples/ex004_00_navigation/test/golden_files/ex05_4.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_5.png b/examples/ex004_00_navigation/test/golden_files/ex05_5.png index 4ac846f3..61516b96 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_5.png and b/examples/ex004_00_navigation/test/golden_files/ex05_5.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_6.png b/examples/ex004_00_navigation/test/golden_files/ex05_6.png index 038684f5..f7a95add 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_6.png and b/examples/ex004_00_navigation/test/golden_files/ex05_6.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_7.png b/examples/ex004_00_navigation/test/golden_files/ex05_7.png index 261cc402..2e3faf6a 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_7.png and b/examples/ex004_00_navigation/test/golden_files/ex05_7.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_8.png b/examples/ex004_00_navigation/test/golden_files/ex05_8.png index ebbef7df..ba025261 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_8.png and b/examples/ex004_00_navigation/test/golden_files/ex05_8.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex05_9.png b/examples/ex004_00_navigation/test/golden_files/ex05_9.png index ab3a0283..a7a0e245 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex05_9.png and b/examples/ex004_00_navigation/test/golden_files/ex05_9.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_10.png b/examples/ex004_00_navigation/test/golden_files/ex10_10.png index a23ec0ad..1dc6b86b 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_10.png and b/examples/ex004_00_navigation/test/golden_files/ex10_10.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_11.png b/examples/ex004_00_navigation/test/golden_files/ex10_11.png index 0fc906d2..0d07f98a 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_11.png and b/examples/ex004_00_navigation/test/golden_files/ex10_11.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_2.png b/examples/ex004_00_navigation/test/golden_files/ex10_2.png index a23ec0ad..1dc6b86b 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_2.png and b/examples/ex004_00_navigation/test/golden_files/ex10_2.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_3.png b/examples/ex004_00_navigation/test/golden_files/ex10_3.png index 4ddb58a3..cbfa83ab 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_3.png and b/examples/ex004_00_navigation/test/golden_files/ex10_3.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_4.png b/examples/ex004_00_navigation/test/golden_files/ex10_4.png index a23ec0ad..1dc6b86b 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_4.png and b/examples/ex004_00_navigation/test/golden_files/ex10_4.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_5.png b/examples/ex004_00_navigation/test/golden_files/ex10_5.png index d31d47e1..6252ef82 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_5.png and b/examples/ex004_00_navigation/test/golden_files/ex10_5.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_6.png b/examples/ex004_00_navigation/test/golden_files/ex10_6.png index 4ddb58a3..cbfa83ab 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_6.png and b/examples/ex004_00_navigation/test/golden_files/ex10_6.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_7.png b/examples/ex004_00_navigation/test/golden_files/ex10_7.png index d31d47e1..6252ef82 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_7.png and b/examples/ex004_00_navigation/test/golden_files/ex10_7.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_8.png b/examples/ex004_00_navigation/test/golden_files/ex10_8.png index 4ddb58a3..cbfa83ab 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_8.png and b/examples/ex004_00_navigation/test/golden_files/ex10_8.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex10_9.png b/examples/ex004_00_navigation/test/golden_files/ex10_9.png index 966ed289..50d9d99c 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex10_9.png and b/examples/ex004_00_navigation/test/golden_files/ex10_9.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex11_1.png b/examples/ex004_00_navigation/test/golden_files/ex11_1.png index 2ca7af89..a4fc1641 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex11_1.png and b/examples/ex004_00_navigation/test/golden_files/ex11_1.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex11_2.png b/examples/ex004_00_navigation/test/golden_files/ex11_2.png index 72a7d93e..f5134260 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex11_2.png and b/examples/ex004_00_navigation/test/golden_files/ex11_2.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex11_3.png b/examples/ex004_00_navigation/test/golden_files/ex11_3.png index 12105a9f..80bfecae 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex11_3.png and b/examples/ex004_00_navigation/test/golden_files/ex11_3.png differ diff --git a/examples/ex004_00_navigation/test/golden_files/ex11_4.png b/examples/ex004_00_navigation/test/golden_files/ex11_4.png index ad7dedc1..37f27a50 100644 Binary files a/examples/ex004_00_navigation/test/golden_files/ex11_4.png and b/examples/ex004_00_navigation/test/golden_files/ex11_4.png differ diff --git a/examples/ex005_00_crud_operations/lib/ex_000_crud_app_using_core_state_management/blocs/todos_bloc.dart b/examples/ex005_00_crud_operations/lib/ex_000_crud_app_using_core_state_management/blocs/todos_bloc.dart index fd5fcac3..53e887ed 100644 --- a/examples/ex005_00_crud_operations/lib/ex_000_crud_app_using_core_state_management/blocs/todos_bloc.dart +++ b/examples/ex005_00_crud_operations/lib/ex_000_crud_app_using_core_state_management/blocs/todos_bloc.dart @@ -6,7 +6,6 @@ import 'package:uuid/uuid.dart'; import '../data_source/i_todos_repository.dart'; import '../data_source/todos_fake_repository.dart'; -import '../data_source/todos_http_repository.dart'; import '../models/todo.dart'; import '../models/todo_filter.dart'; diff --git a/examples/ex005_00_crud_operations/lib/ex_001_crud_app_using_injected_crud/blocs/todos_bloc.dart b/examples/ex005_00_crud_operations/lib/ex_001_crud_app_using_injected_crud/blocs/todos_bloc.dart index 8d1aea72..88ea467c 100644 --- a/examples/ex005_00_crud_operations/lib/ex_001_crud_app_using_injected_crud/blocs/todos_bloc.dart +++ b/examples/ex005_00_crud_operations/lib/ex_001_crud_app_using_injected_crud/blocs/todos_bloc.dart @@ -1,11 +1,7 @@ -import 'dart:math'; - import 'package:flutter/material.dart'; import 'package:states_rebuilder/states_rebuilder.dart'; import 'package:uuid/uuid.dart'; -import '../data_source/i_todos_repository.dart'; -import '../data_source/todos_fake_repository.dart'; import '../data_source/todos_http_repository.dart'; import '../models/todo.dart'; import '../models/todo_filter.dart'; diff --git a/examples/ex006_00_authentication_and_authorization/lib/ex_002_user_authentication_using_navigation2_api/navigator.dart b/examples/ex006_00_authentication_and_authorization/lib/ex_002_user_authentication_using_navigation2_api/navigator.dart index 1992369b..4500b87a 100644 --- a/examples/ex006_00_authentication_and_authorization/lib/ex_002_user_authentication_using_navigation2_api/navigator.dart +++ b/examples/ex006_00_authentication_and_authorization/lib/ex_002_user_authentication_using_navigation2_api/navigator.dart @@ -3,7 +3,6 @@ import 'package:states_rebuilder/scr/state_management/rm.dart'; import 'blocs/auth_bloc.dart'; import 'ui/home_page/home_page.dart'; import 'ui/sign_in_page/sign_in_page.dart'; -import 'ui/sign_in_register_form_page/sign_in_register_form_page.dart'; final navigator = RM.injectNavigator( routes: { diff --git a/examples/ex006_00_authentication_and_authorization/lib/ex_003_auto_logout_and_refresh_token/blocs/auth_bloc.dart b/examples/ex006_00_authentication_and_authorization/lib/ex_003_auto_logout_and_refresh_token/blocs/auth_bloc.dart index 5545c571..914baebe 100644 --- a/examples/ex006_00_authentication_and_authorization/lib/ex_003_auto_logout_and_refresh_token/blocs/auth_bloc.dart +++ b/examples/ex006_00_authentication_and_authorization/lib/ex_003_auto_logout_and_refresh_token/blocs/auth_bloc.dart @@ -4,7 +4,6 @@ import 'package:states_rebuilder/scr/state_management/rm.dart'; import '../common/extensions.dart'; import '../data_source/fake_auth_repository.dart'; -import '../data_source/firebase_auth_repository.dart'; import '../models/user.dart'; @immutable diff --git a/examples/ex007_00_app_theme_management/pubspec.yaml b/examples/ex007_00_app_theme_management/pubspec.yaml index 82cadccc..544fd349 100644 --- a/examples/ex007_00_app_theme_management/pubspec.yaml +++ b/examples/ex007_00_app_theme_management/pubspec.yaml @@ -32,7 +32,7 @@ dependencies: hive_flutter: ^1.0.0 states_rebuilder: path: ../../states_rebuilder_package - google_fonts: ^2.3.1 + google_fonts: any # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 diff --git a/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_ar.arb b/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_ar.arb index caf00b1c..efc72ec7 100644 --- a/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_ar.arb +++ b/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_ar.arb @@ -3,7 +3,7 @@ "helloWorld": "مرحبا بالجميع!", "welcome": "مرحبا {name}", "gender": "{gender, select, male {مرحبا يارجل!} female {مرحبا يامرأة!} other {مرحبا هناك!}}", - "plural": "{howMany, plural,=0{صفر رسالة} =1{رسالة واحدة} 2{رسالاتان} few{{howMany} رسائل} other{{howMany} رسالة}}", + "plural": "{howMany, plural,=0{صفر رسالة} =1{رسالة واحدة} =2{رسالاتان} few{{howMany} رسائل} other{{howMany} رسالة}}", "formattedNumber": "الرقم بعد التهيئة هو {value}", "date": "اليوم هو {date}" } \ No newline at end of file diff --git a/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_en.arb b/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_en.arb index 31fef7ea..b09f45b9 100644 --- a/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_en.arb +++ b/examples/ex008_00_app_i18n_i10n/lib/ex_002_i18n_using_arb/l10n/app_en.arb @@ -7,7 +7,7 @@ "welcome": "Welcome {name}", "@welcome": { "placeholders": { - "name": {} + "name": {} } }, "gender": "{gender, select, male {Hi man!} female {Hi woman!} other {Hi there!}}", diff --git a/examples/ex008_00_app_i18n_i10n/pubspec.yaml b/examples/ex008_00_app_i18n_i10n/pubspec.yaml index d5d83bb5..37f0f61a 100644 --- a/examples/ex008_00_app_i18n_i10n/pubspec.yaml +++ b/examples/ex008_00_app_i18n_i10n/pubspec.yaml @@ -35,8 +35,8 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.2 - intl: ^0.17.0 + cupertino_icons: any + intl: any dev_dependencies: flutter_test: diff --git a/examples/ex009_00_animation/.metadata b/examples/ex009_00_animation/.metadata index 56bfc2c4..6d1a38a1 100644 --- a/examples/ex009_00_animation/.metadata +++ b/examples/ex009_00_animation/.metadata @@ -1,10 +1,45 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled and should not be manually edited. +# This file should be version controlled. version: - revision: f4abaa0735eba4dfd8f33f73363911d63931fe03 + revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 channel: stable project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + - platform: android + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + - platform: ios + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + - platform: linux + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + - platform: macos + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + - platform: web + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + - platform: windows + create_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + base_revision: 90c64ed42ba53a52d18f0cb3b17666c8662ed2a0 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/examples/ex010_00_form_fields/lib/ex_006_00_other_form_fields.dart b/examples/ex010_00_form_fields/lib/ex_006_00_other_form_fields.dart index e20dc787..76c307df 100644 --- a/examples/ex010_00_form_fields/lib/ex_006_00_other_form_fields.dart +++ b/examples/ex010_00_form_fields/lib/ex_006_00_other_form_fields.dart @@ -27,8 +27,8 @@ class _Body extends StatelessWidget { static final form = RM.injectForm( autovalidateMode: AutovalidateMode.onUserInteraction, ); - static final text = RM.injectTextEditing(); - static final checkbox = RM.injectFormField( + // static final text = RM.injectTextEditing(); + static final checkbox = RM.injectFormField( false, validators: [ (val) => !val ? 'You must accept terms and conditions to continue' : null, diff --git a/examples/ex010_00_form_fields/test/ex_002_00_text_fields_validation_using_injectTextEditing_test.dart b/examples/ex010_00_form_fields/test/ex_002_00_text_fields_validation_using_injectTextEditing_test.dart index a9f48774..75dbd74c 100644 --- a/examples/ex010_00_form_fields/test/ex_002_00_text_fields_validation_using_injectTextEditing_test.dart +++ b/examples/ex010_00_form_fields/test/ex_002_00_text_fields_validation_using_injectTextEditing_test.dart @@ -4,8 +4,8 @@ import 'package:flutter_test/flutter_test.dart'; void main() { late Finder emailTextField; - late Finder passwordTextField; - late Finder activeLoginButton; + // late Finder passwordTextField; + // late Finder activeLoginButton; setUp( () { emailTextField = find.byWidgetPredicate( @@ -14,15 +14,15 @@ void main() { widget.decoration?.labelText == "Email Address", ); - passwordTextField = find.byWidgetPredicate( - (widget) => - widget is TextField && widget.decoration?.labelText == "Password", - ); + // passwordTextField = find.byWidgetPredicate( + // (widget) => + // widget is TextField && widget.decoration?.labelText == "Password", + // ); - //active login button is that with a non null onPressed parameter - activeLoginButton = find.byWidgetPredicate( - (widget) => widget is ElevatedButton && widget.onPressed != null, - ); + // //active login button is that with a non null onPressed parameter + // activeLoginButton = find.byWidgetPredicate( + // (widget) => widget is ElevatedButton && widget.onPressed != null, + // ); }, ); diff --git a/examples/ex010_00_form_fields/test/ex_003_00_text_fields_validation_using_injectedForm_test.dart b/examples/ex010_00_form_fields/test/ex_003_00_text_fields_validation_using_injectedForm_test.dart index e3b32cd3..e9d7d0f4 100644 --- a/examples/ex010_00_form_fields/test/ex_003_00_text_fields_validation_using_injectedForm_test.dart +++ b/examples/ex010_00_form_fields/test/ex_003_00_text_fields_validation_using_injectedForm_test.dart @@ -1,30 +1,29 @@ import 'package:ex010_00_form_fields/ex_003_00_text_fields_validation_using_injectedForm.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { - late Finder emailTextField; - late Finder passwordTextField; - late Finder activeLoginButton; - setUp( - () { - emailTextField = find.byWidgetPredicate( - (widget) => - widget is TextField && - widget.decoration?.labelText == "Email Address", - ); + // late Finder emailTextField; + // late Finder passwordTextField; + // late Finder activeLoginButton; + // setUp( + // () { + // emailTextField = find.byWidgetPredicate( + // (widget) => + // widget is TextField && + // widget.decoration?.labelText == "Email Address", + // ); - passwordTextField = find.byWidgetPredicate( - (widget) => - widget is TextField && widget.decoration?.labelText == "Password", - ); + // passwordTextField = find.byWidgetPredicate( + // (widget) => + // widget is TextField && widget.decoration?.labelText == "Password", + // ); - //active login button is that with a non null onPressed parameter - activeLoginButton = find.byWidgetPredicate( - (widget) => widget is ElevatedButton && widget.onPressed != null, - ); - }, - ); + // //active login button is that with a non null onPressed parameter + // activeLoginButton = find.byWidgetPredicate( + // (widget) => widget is ElevatedButton && widget.onPressed != null, + // ); + // }, + // ); testWidgets('email validation', (WidgetTester tester) async { // Build our app and trigger a frame. diff --git a/examples/ex010_00_form_fields/test/ex_005_00_check_box_form_field_test.dart b/examples/ex010_00_form_fields/test/ex_005_00_check_box_form_field_test.dart index e26ec40a..f5abf16a 100644 --- a/examples/ex010_00_form_fields/test/ex_005_00_check_box_form_field_test.dart +++ b/examples/ex010_00_form_fields/test/ex_005_00_check_box_form_field_test.dart @@ -1,30 +1,29 @@ import 'package:ex010_00_form_fields/ex_005_00_check_box_form_field.dart'; -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { - late Finder emailTextField; - late Finder passwordTextField; - late Finder activeLoginButton; - setUp( - () { - emailTextField = find.byWidgetPredicate( - (widget) => - widget is TextField && - widget.decoration?.labelText == "Email Address", - ); + // late Finder emailTextField; + // late Finder passwordTextField; + // late Finder activeLoginButton; + // setUp( + // () { + // emailTextField = find.byWidgetPredicate( + // (widget) => + // widget is TextField && + // widget.decoration?.labelText == "Email Address", + // ); - passwordTextField = find.byWidgetPredicate( - (widget) => - widget is TextField && widget.decoration?.labelText == "Password", - ); + // passwordTextField = find.byWidgetPredicate( + // (widget) => + // widget is TextField && widget.decoration?.labelText == "Password", + // ); - //active login button is that with a non null onPressed parameter - activeLoginButton = find.byWidgetPredicate( - (widget) => widget is ElevatedButton && widget.onPressed != null, - ); - }, - ); + // //active login button is that with a non null onPressed parameter + // activeLoginButton = find.byWidgetPredicate( + // (widget) => widget is ElevatedButton && widget.onPressed != null, + // ); + // }, + // ); testWidgets('email validation', (WidgetTester tester) async { // Build our app and trigger a frame. diff --git a/examples/ex010_00_form_fields/test/widget_test.dart b/examples/ex010_00_form_fields/test/widget_test.dart index 6137d82a..ae40864a 100644 --- a/examples/ex010_00_form_fields/test/widget_test.dart +++ b/examples/ex010_00_form_fields/test/widget_test.dart @@ -5,7 +5,6 @@ // gestures. You can also use WidgetTester to find child widgets in the widget // tree, read text, and verify that the values of widget properties are correct. -import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; void main() { diff --git a/examples/others/ex005_00_create_read_update_delete_from_list_of_items/pubspec.yaml b/examples/others/ex005_00_create_read_update_delete_from_list_of_items/pubspec.yaml index 3f5ce7d8..3a0da8c9 100644 --- a/examples/others/ex005_00_create_read_update_delete_from_list_of_items/pubspec.yaml +++ b/examples/others/ex005_00_create_read_update_delete_from_list_of_items/pubspec.yaml @@ -18,7 +18,8 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.15.1 <3.0.0" + sdk: '>=2.12.0 <3.0.0' + # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/examples/others/ex_000_hello_world/pubspec.yaml b/examples/others/ex_000_hello_world/pubspec.yaml index caf5510c..52a2eaa2 100644 --- a/examples/others/ex_000_hello_world/pubspec.yaml +++ b/examples/others/ex_000_hello_world/pubspec.yaml @@ -8,7 +8,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.12.0-0 <3.0.0" + sdk: '>=2.12.0 <3.0.0' dependencies: flutter: diff --git a/examples/others/ex_001_2_flutter_default_counter_app_with_functional_injection/pubspec.yaml b/examples/others/ex_001_2_flutter_default_counter_app_with_functional_injection/pubspec.yaml index 0228b3c6..27044e02 100644 --- a/examples/others/ex_001_2_flutter_default_counter_app_with_functional_injection/pubspec.yaml +++ b/examples/others/ex_001_2_flutter_default_counter_app_with_functional_injection/pubspec.yaml @@ -14,7 +14,7 @@ description: A new Flutter project. version: 1.0.0+1 publish_to: none environment: - sdk: ">=2.12.0-0 <3.0.0" + sdk: '>=2.12.0 <3.0.0' dependencies: flutter: @@ -24,7 +24,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: any dev_dependencies: flutter_test: diff --git a/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/lib/main.dart b/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/lib/main.dart index f46642df..303f28e6 100644 --- a/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/lib/main.dart +++ b/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/lib/main.dart @@ -37,6 +37,7 @@ final email = RM.inject( Exception("Enter a valid Email"), ); } + return null; }, ); final password = RM.inject( @@ -48,6 +49,7 @@ final password = RM.inject( stackTrace: StackTrace.current, ); } + return null; }, ); diff --git a/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/pubspec.yaml b/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/pubspec.yaml index a60e6ae0..74b2f561 100644 --- a/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/pubspec.yaml +++ b/examples/others/ex_002_2_form_validation_with_reactive_model_with_functional_injection/pubspec.yaml @@ -25,7 +25,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: any dev_dependencies: flutter_test: diff --git a/examples/others/ex_003_2_async_counter_app_with_functional_injection/pubspec.yaml b/examples/others/ex_003_2_async_counter_app_with_functional_injection/pubspec.yaml index e5558a11..f85a51d7 100644 --- a/examples/others/ex_003_2_async_counter_app_with_functional_injection/pubspec.yaml +++ b/examples/others/ex_003_2_async_counter_app_with_functional_injection/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: any dev_dependencies: flutter_test: diff --git a/examples/others/ex_004_2_countdown_timer_with_functional_injection/pubspec.yaml b/examples/others/ex_004_2_countdown_timer_with_functional_injection/pubspec.yaml index 57171b94..70c8bb52 100644 --- a/examples/others/ex_004_2_countdown_timer_with_functional_injection/pubspec.yaml +++ b/examples/others/ex_004_2_countdown_timer_with_functional_injection/pubspec.yaml @@ -24,7 +24,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: any dev_dependencies: flutter_test: diff --git a/examples/others/ex_005_1_internationalization_using_arb/lib/l10n/app_ar.arb b/examples/others/ex_005_1_internationalization_using_arb/lib/l10n/app_ar.arb index caf00b1c..efc72ec7 100644 --- a/examples/others/ex_005_1_internationalization_using_arb/lib/l10n/app_ar.arb +++ b/examples/others/ex_005_1_internationalization_using_arb/lib/l10n/app_ar.arb @@ -3,7 +3,7 @@ "helloWorld": "مرحبا بالجميع!", "welcome": "مرحبا {name}", "gender": "{gender, select, male {مرحبا يارجل!} female {مرحبا يامرأة!} other {مرحبا هناك!}}", - "plural": "{howMany, plural,=0{صفر رسالة} =1{رسالة واحدة} 2{رسالاتان} few{{howMany} رسائل} other{{howMany} رسالة}}", + "plural": "{howMany, plural,=0{صفر رسالة} =1{رسالة واحدة} =2{رسالاتان} few{{howMany} رسائل} other{{howMany} رسالة}}", "formattedNumber": "الرقم بعد التهيئة هو {value}", "date": "اليوم هو {date}" } \ No newline at end of file diff --git a/examples/others/ex_005_theme_switching/lib/i18n.dart b/examples/others/ex_005_theme_switching/lib/i18n.dart index 6d4c121a..d6fb57e3 100644 --- a/examples/others/ex_005_theme_switching/lib/i18n.dart +++ b/examples/others/ex_005_theme_switching/lib/i18n.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:states_rebuilder/states_rebuilder.dart'; -final i18n = RM.injectI18N( +final InjectedI18N i18n = RM.injectI18N( { Locale('en', 'US'): () => EnUS(), Locale('es', 'ES'): () => EsES(), diff --git a/examples/others/ex_006_2_infinite_scroll_list/.metadata b/examples/others/ex_006_2_infinite_scroll_list/.metadata index 36a46146..e94891d5 100644 --- a/examples/others/ex_006_2_infinite_scroll_list/.metadata +++ b/examples/others/ex_006_2_infinite_scroll_list/.metadata @@ -1,10 +1,45 @@ # This file tracks properties of this Flutter project. # Used by Flutter tool to assess capabilities and perform upgrades etc. # -# This file should be version controlled and should not be manually edited. +# This file should be version controlled. version: - revision: 63062a64432cce03315d6b5196fda7912866eb37 - channel: dev + revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + channel: stable project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + - platform: android + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + - platform: ios + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + - platform: linux + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + - platform: macos + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + - platform: web + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + - platform: windows + create_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + base_revision: 84a1e904f44f9b0e9c4510138010edcc653163f8 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/examples/others/ex_006_2_infinite_scroll_list/pubspec.yaml b/examples/others/ex_006_2_infinite_scroll_list/pubspec.yaml index 21245272..cf1a4b3e 100644 --- a/examples/others/ex_006_2_infinite_scroll_list/pubspec.yaml +++ b/examples/others/ex_006_2_infinite_scroll_list/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.12.0-259.9.beta <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: @@ -26,7 +26,7 @@ dependencies: states_rebuilder: path: ../../../states_rebuilder_package cupertino_icons: ^1.0.1 - http: ^0.12.0 + http: any dev_dependencies: flutter_test: diff --git a/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/lib/blocs/posts_bloc.dart b/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/lib/blocs/posts_bloc.dart index c8a796ca..5d5c3ca9 100644 --- a/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/lib/blocs/posts_bloc.dart +++ b/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/lib/blocs/posts_bloc.dart @@ -25,6 +25,7 @@ class PostsBloc { postsRM.setState( (state) { posts.firstWhere((post) => post.id == postId).incrementLikes(); + return null; }, ); } diff --git a/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/pubspec.yaml b/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/pubspec.yaml index 7a3b879c..1068fade 100644 --- a/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/pubspec.yaml +++ b/examples/others/ex_007_2_clean_architecture_dane_mackier_app_with_fi/pubspec.yaml @@ -23,7 +23,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: any states_rebuilder: path: ../../../states_rebuilder_package http: ^0.13.0-nullsafety.0 diff --git a/examples/others/ex_008_clean_architecture_firebase_login/lib/data_source/fake_user_repository.dart b/examples/others/ex_008_clean_architecture_firebase_login/lib/data_source/fake_user_repository.dart index 4dc52c62..e8a48248 100644 --- a/examples/others/ex_008_clean_architecture_firebase_login/lib/data_source/fake_user_repository.dart +++ b/examples/others/ex_008_clean_architecture_firebase_login/lib/data_source/fake_user_repository.dart @@ -68,5 +68,7 @@ class FakeUserRepository implements UserRepository { } @override - Future? refreshToken(User? currentUser) {} + Future? refreshToken(User? currentUser) { + return null; + } } diff --git a/examples/others/ex_008_clean_architecture_firebase_login/lib/ui/pages/sign_in_register_form_page/sign_in_register_form_page.dart b/examples/others/ex_008_clean_architecture_firebase_login/lib/ui/pages/sign_in_register_form_page/sign_in_register_form_page.dart index 78e8a46a..57674a68 100644 --- a/examples/others/ex_008_clean_architecture_firebase_login/lib/ui/pages/sign_in_register_form_page/sign_in_register_form_page.dart +++ b/examples/others/ex_008_clean_architecture_firebase_login/lib/ui/pages/sign_in_register_form_page/sign_in_register_form_page.dart @@ -14,6 +14,7 @@ final _email = RM.injectTextEditing( if (!Validators.isValidEmail(val!)) { return 'Enter a valid email'; } + return null; } ], ); @@ -23,6 +24,7 @@ final _password = RM.injectTextEditing( if (!Validators.isValidPassword(val!)) { return 'Enter a valid password'; } + return null; } ], validateOnTyping: true, @@ -34,6 +36,7 @@ final _confirmationPassword = RM.injectTextEditing( if (_password.text != val) { return 'Passwords do not match'; } + return null; } ], validateOnTyping: true, diff --git a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/common/validators.dart b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/common/validators.dart index 0b52e555..ef0890e1 100644 --- a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/common/validators.dart +++ b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/common/validators.dart @@ -5,12 +5,14 @@ class Validators { if (!_emailRegExp.hasMatch(email!)) { return i18n.state.enterValidEmail; } + return null; } static String? passwordValidation(String? password) { if (!_passwordRegExp.hasMatch(password!)) { return i18n.state.enterValidPassword; } + return null; } static final RegExp _passwordRegExp = RegExp( diff --git a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/sign_form_bloc.dart b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/sign_form_bloc.dart index 1cd9bd7f..27fe5f09 100644 --- a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/sign_form_bloc.dart +++ b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/blocs/sign_form_bloc.dart @@ -26,6 +26,7 @@ class SignFormBloc { if (password.text != value) { return 'Passwords do not match'; } + return null; } ], ); diff --git a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/data_source/firebase_auth_repository.dart b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/data_source/firebase_auth_repository.dart index 8ab3ac3a..27a0bf86 100644 --- a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/data_source/firebase_auth_repository.dart +++ b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/data_source/firebase_auth_repository.dart @@ -1,3 +1,5 @@ +// ignore_for_file: body_might_complete_normally_nullable + import 'dart:convert'; import 'package:http/http.dart' as http; diff --git a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/ui/pages/add_edit_screen.dart/add_edit_screen.dart b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/ui/pages/add_edit_screen.dart/add_edit_screen.dart index 7943551e..39af5b44 100644 --- a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/ui/pages/add_edit_screen.dart/add_edit_screen.dart +++ b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/lib/ui/pages/add_edit_screen.dart/add_edit_screen.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by the MIT license that can be found // in the LICENSE file. +// ignore_for_file: body_might_complete_normally_nullable + import 'package:ex_009_1_3_ca_todo_mvc_with_state_persistence_user_auth/blocs/todos_bloc.dart'; import 'package:ex_009_1_3_ca_todo_mvc_with_state_persistence_user_auth/ui/localization/localization.dart'; import 'package:flutter/foundation.dart'; diff --git a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/test/fake_auth_repository.dart b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/test/fake_auth_repository.dart index 9d8644ab..bd0d7dc1 100644 --- a/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/test/fake_auth_repository.dart +++ b/examples/others/ex_009_1_4_ca_todo_mvc_with_state_persistence_and_user_auth/test/fake_auth_repository.dart @@ -1,3 +1,5 @@ +// ignore_for_file: body_might_complete_normally_nullable + import 'package:ex_009_1_3_ca_todo_mvc_with_state_persistence_user_auth/data_source/firebase_auth_repository.dart'; import 'package:ex_009_1_3_ca_todo_mvc_with_state_persistence_user_auth/domain/common/extensions.dart'; import 'package:ex_009_1_3_ca_todo_mvc_with_state_persistence_user_auth/domain/entities/user.dart'; diff --git a/examples/others/ex_010_flutter_movie_example/lib/ui/home_page/home_page.dart b/examples/others/ex_010_flutter_movie_example/lib/ui/home_page/home_page.dart index cf42f54e..99c25c70 100644 --- a/examples/others/ex_010_flutter_movie_example/lib/ui/home_page/home_page.dart +++ b/examples/others/ex_010_flutter_movie_example/lib/ui/home_page/home_page.dart @@ -12,10 +12,6 @@ class MyHomePage extends StatelessWidget { const MyHomePage({Key? key, required this.title}) : super(key: key); final String title; - @override - void didUnmountWidget() { - homePageBloc.dispose(); - } List get videoResult => homePageBloc.videoResult; List get popularVideoResult => homePageBloc.popularVideoResult; diff --git a/examples/others/ex_011_github_search_app/lib/data_source/github_search_repository.dart b/examples/others/ex_011_github_search_app/lib/data_source/github_search_repository.dart index 15d881b9..5d3ff5a4 100644 --- a/examples/others/ex_011_github_search_app/lib/data_source/github_search_repository.dart +++ b/examples/others/ex_011_github_search_app/lib/data_source/github_search_repository.dart @@ -12,9 +12,9 @@ class GitHubSearchRepository implements IGitHubSearchRepository { final response = await http.get(uri); if (response.statusCode == 200) { final Map data = json.decode(response.body); - final List items = data['items']; + final List? items = data['items']; if (items?.isNotEmpty ?? false) { - return items.map((item) => GitHubUser.fromMap(item)).toList(); + return items!.map((item) => GitHubUser.fromMap(item)).toList(); } throw GitHubAPIError.parseError(); } diff --git a/examples/others/ex_011_github_search_app/lib/domain/entities/github_user.dart b/examples/others/ex_011_github_search_app/lib/domain/entities/github_user.dart index 4a932c7d..5223d2c9 100644 --- a/examples/others/ex_011_github_search_app/lib/domain/entities/github_user.dart +++ b/examples/others/ex_011_github_search_app/lib/domain/entities/github_user.dart @@ -1,13 +1,11 @@ -import 'package:flutter/foundation.dart'; - class GitHubUser { final String login; final String avatarUrl; final String htmlUrl; GitHubUser({ - @required this.login, - @required this.avatarUrl, - @required this.htmlUrl, + required this.login, + required this.avatarUrl, + required this.htmlUrl, }); Map toMap() { @@ -19,8 +17,6 @@ class GitHubUser { } factory GitHubUser.fromMap(Map map) { - if (map == null) return null; - return GitHubUser( login: map['login'], avatarUrl: map['avatar_url'], diff --git a/examples/others/ex_011_github_search_app/lib/service/github_search_service.dart b/examples/others/ex_011_github_search_app/lib/service/github_search_service.dart index 912f3ca9..8885a492 100644 --- a/examples/others/ex_011_github_search_app/lib/service/github_search_service.dart +++ b/examples/others/ex_011_github_search_app/lib/service/github_search_service.dart @@ -1,12 +1,10 @@ -import 'package:flutter/foundation.dart'; - import '../domain/entities/github_user.dart'; import 'interfaces/i_github_search_repository.dart'; class GitHubSearchService { final IGitHubSearchRepository gitHubSearchRepository; - GitHubSearchService({@required this.gitHubSearchRepository}); + GitHubSearchService({required this.gitHubSearchRepository}); Future> searchUser(String userName) async { if (userName.isEmpty) { diff --git a/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_delegate.dart b/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_delegate.dart index 676475bb..4b6b55af 100644 --- a/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_delegate.dart +++ b/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_delegate.dart @@ -6,7 +6,7 @@ import '../../../injected.dart'; import '../../widgets/search_placeholder.dart'; import 'github_search_result_tile.dart'; -class GitHubSearchDelegate extends SearchDelegate { +class GitHubSearchDelegate extends SearchDelegate { @override Widget buildLeading(BuildContext context) { return IconButton( diff --git a/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_result_tile.dart b/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_result_tile.dart index ccb0544c..f8e83d05 100644 --- a/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_result_tile.dart +++ b/examples/others/ex_011_github_search_app/lib/ui/pages/home/github_search_result_tile.dart @@ -5,7 +5,7 @@ import '../../../injected.dart'; class GitHubUserSearchResultTile extends StatelessWidget { const GitHubUserSearchResultTile( - {@required this.user, @required this.onSelected}); + {required this.user, required this.onSelected}); final GitHubUser user; final ValueChanged onSelected; diff --git a/examples/others/ex_011_github_search_app/lib/ui/pages/home/home_page.dart b/examples/others/ex_011_github_search_app/lib/ui/pages/home/home_page.dart index 83765681..37506314 100644 --- a/examples/others/ex_011_github_search_app/lib/ui/pages/home/home_page.dart +++ b/examples/others/ex_011_github_search_app/lib/ui/pages/home/home_page.dart @@ -16,10 +16,10 @@ class HomePage extends StatelessWidget { child: Text('Search', style: Theme.of(context) .textTheme - .headline6 + .titleLarge! .copyWith(color: Colors.white)), onPressed: () async { - final user = await showSearch( + final user = await showSearch( context: context, delegate: GitHubSearchDelegate(), ); diff --git a/examples/others/ex_011_github_search_app/lib/ui/widgets/search_placeholder.dart b/examples/others/ex_011_github_search_app/lib/ui/widgets/search_placeholder.dart index 1aa132f4..3a314bdb 100644 --- a/examples/others/ex_011_github_search_app/lib/ui/widgets/search_placeholder.dart +++ b/examples/others/ex_011_github_search_app/lib/ui/widgets/search_placeholder.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; class SearchPlaceholder extends StatelessWidget { - const SearchPlaceholder({@required this.title}); + const SearchPlaceholder({required this.title}); final String title; @override Widget build(BuildContext context) { diff --git a/examples/others/ex_011_github_search_app/pubspec.yaml b/examples/others/ex_011_github_search_app/pubspec.yaml index 0cac5249..6ef8e8f5 100644 --- a/examples/others/ex_011_github_search_app/pubspec.yaml +++ b/examples/others/ex_011_github_search_app/pubspec.yaml @@ -18,7 +18,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: @@ -28,8 +28,8 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.3 - http: ^0.12.2 + cupertino_icons: any + http: any dev_dependencies: flutter_test: diff --git a/examples/others/todos_app_core/lib/src/keys.dart b/examples/others/todos_app_core/lib/src/keys.dart index 7c088f95..9047b778 100644 --- a/examples/others/todos_app_core/lib/src/keys.dart +++ b/examples/others/todos_app_core/lib/src/keys.dart @@ -14,7 +14,7 @@ class ArchSampleKeys { // Todos static const todoList = Key('__todoList__'); static const todosLoading = Key('__todosLoading__'); - static final todoItem = (String id) => Key('TodoItem__${id}'); + static final todoItem = (String id) => Key('TodoItem__$id'); static final todoItemCheckbox = (String id) => Key('TodoItem__${id}__Checkbox'); static final todoItemTask = (String id) => Key('TodoItem__${id}__Task'); diff --git a/examples/others/todos_app_core/lib/src/localization.dart b/examples/others/todos_app_core/lib/src/localization.dart index 642ddac3..2417792e 100644 --- a/examples/others/todos_app_core/lib/src/localization.dart +++ b/examples/others/todos_app_core/lib/src/localization.dart @@ -20,7 +20,7 @@ class ArchSampleLocalizations { }); } - static ArchSampleLocalizations of(BuildContext context) { + static ArchSampleLocalizations? of(BuildContext context) { return Localizations.of( context, ArchSampleLocalizations); } diff --git a/examples/others/todos_app_core/lib/src/localizations/messages_all.dart b/examples/others/todos_app_core/lib/src/localizations/messages_all.dart index 839d9511..5e575461 100644 --- a/examples/others/todos_app_core/lib/src/localizations/messages_all.dart +++ b/examples/others/todos_app_core/lib/src/localizations/messages_all.dart @@ -20,7 +20,7 @@ Map _deferredLibraries = { 'en': () => Future.value(null), }; -MessageLookupByLibrary _findExact(localeName) { +MessageLookupByLibrary? _findExact(localeName) { switch (localeName) { case 'en': return messages_en.messages; @@ -45,7 +45,7 @@ bool _messagesExistFor(String locale) { } } -MessageLookupByLibrary _findGeneratedMessagesFor(locale) { +MessageLookupByLibrary? _findGeneratedMessagesFor(locale) { var actualLocale = Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); if (actualLocale == null) return null; diff --git a/examples/others/todos_app_core/lib/src/localizations/messages_en.dart b/examples/others/todos_app_core/lib/src/localizations/messages_en.dart index 572069b7..fdf174b2 100644 --- a/examples/others/todos_app_core/lib/src/localizations/messages_en.dart +++ b/examples/others/todos_app_core/lib/src/localizations/messages_en.dart @@ -22,7 +22,7 @@ class MessageLookup extends MessageLookupByLibrary { @override String get localeName => 'en'; - static String m0(task) => 'Deleted "${task}"'; + static String m0(task) => 'Deleted "$task"'; @override final messages = _notInlinedMessages(_notInlinedMessages); diff --git a/examples/others/todos_app_core/lib/src/optional.dart b/examples/others/todos_app_core/lib/src/optional.dart index 59d8e146..18e67ddc 100644 --- a/examples/others/todos_app_core/lib/src/optional.dart +++ b/examples/others/todos_app_core/lib/src/optional.dart @@ -10,7 +10,7 @@ import 'dart:collection'; /// values to be null. It signals that a value is not required and provides /// convenience methods for dealing with the absent case. class Optional extends IterableBase { - final T _value; + final T? _value; /// Constructs an empty Optional. const Optional.absent() : _value = null; @@ -40,13 +40,13 @@ class Optional extends IterableBase { if (_value == null) { throw StateError('value called on absent Optional.'); } - return _value; + return _value!; } /// Executes a function if the Optional value is present. void ifPresent(void Function(T value) ifPresent) { if (isPresent) { - ifPresent(_value); + ifPresent(_value!); } } @@ -70,7 +70,7 @@ class Optional extends IterableBase { } /// Gets the Optional value, or [null] if there is none. - T get orNull => _value; + T? get orNull => _value; /// Transforms the Optional value. /// @@ -80,12 +80,12 @@ class Optional extends IterableBase { Optional transform(S Function(T value) transformer) { return _value == null ? Optional.absent() - : Optional.of(transformer(_value)); + : Optional.of(transformer(_value!)); } @override Iterator get iterator => - isPresent ? [_value].iterator : Iterable.empty().iterator; + isPresent ? [_value!].iterator : Iterable.empty().iterator; /// Delegates to the underlying [value] hashCode. @override @@ -99,6 +99,6 @@ class Optional extends IterableBase { String toString() { return _value == null ? 'Optional { absent }' - : 'Optional { value: ${_value} }'; + : 'Optional { value: $_value }'; } } diff --git a/examples/others/todos_app_core/lib/src/theme.dart b/examples/others/todos_app_core/lib/src/theme.dart index 5378adee..b5e544b1 100644 --- a/examples/others/todos_app_core/lib/src/theme.dart +++ b/examples/others/todos_app_core/lib/src/theme.dart @@ -9,16 +9,16 @@ class ArchSampleTheme { final themeData = ThemeData.dark(); final textTheme = themeData.textTheme; final body1 = - textTheme.bodyText2.copyWith(decorationColor: Colors.transparent); + textTheme.bodyMedium!.copyWith(decorationColor: Colors.transparent); return ThemeData.dark().copyWith( primaryColor: Colors.grey[800], - accentColor: Colors.cyan[300], - buttonColor: Colors.grey[800], + colorScheme: ColorScheme.dark().copyWith(secondary: Colors.cyan[300]), + buttonTheme: ButtonThemeData( + colorScheme: ColorScheme.dark(primary: Colors.grey[800]!)), textSelectionTheme: TextSelectionThemeData( selectionColor: Colors.cyan[100], ), - toggleableActiveColor: Colors.cyan[300], floatingActionButtonTheme: FloatingActionButtonThemeData( backgroundColor: Colors.cyan[300], ), @@ -28,7 +28,53 @@ class ArchSampleTheme { actionTextColor: Colors.cyan[300], ), textTheme: textTheme.copyWith( - bodyText2: body1, + bodyMedium: body1, + ), + checkboxTheme: CheckboxThemeData( + fillColor: MaterialStateProperty.resolveWith( + (Set states) { + if (states.contains(MaterialState.disabled)) { + return null; + } + if (states.contains(MaterialState.selected)) { + return Colors.cyan[300]; + } + return null; + }), + ), + radioTheme: RadioThemeData( + fillColor: MaterialStateProperty.resolveWith( + (Set states) { + if (states.contains(MaterialState.disabled)) { + return null; + } + if (states.contains(MaterialState.selected)) { + return Colors.cyan[300]; + } + return null; + }), + ), + switchTheme: SwitchThemeData( + thumbColor: MaterialStateProperty.resolveWith( + (Set states) { + if (states.contains(MaterialState.disabled)) { + return null; + } + if (states.contains(MaterialState.selected)) { + return Colors.cyan[300]; + } + return null; + }), + trackColor: MaterialStateProperty.resolveWith( + (Set states) { + if (states.contains(MaterialState.disabled)) { + return null; + } + if (states.contains(MaterialState.selected)) { + return Colors.cyan[300]; + } + return null; + }), ), ); } diff --git a/examples/others/todos_app_core/pubspec.yaml b/examples/others/todos_app_core/pubspec.yaml index e4973028..16d9a0bb 100644 --- a/examples/others/todos_app_core/pubspec.yaml +++ b/examples/others/todos_app_core/pubspec.yaml @@ -1,7 +1,7 @@ name: todos_app_core environment: - sdk: '>=2.0.0-dev.28.0 <3.0.0' + sdk: '>=2.12.0 <3.0.0' dependencies: intl: diff --git a/states_rebuilder_package/CHANGELOG.md b/states_rebuilder_package/CHANGELOG.md index 25f3c954..2dc151e8 100644 --- a/states_rebuilder_package/CHANGELOG.md +++ b/states_rebuilder_package/CHANGELOG.md @@ -1,3 +1,6 @@ +## 6.3.0 +* update to dart3 +* internal refactor ## 6.2.0 * remove double debug print messages (issue #275). * Add dialogs and scaffold related navigation to `InjectedNavigation`. diff --git a/states_rebuilder_package/example/lib/main.dart b/states_rebuilder_package/example/lib/main.dart index f1353b4b..2971d21f 100644 --- a/states_rebuilder_package/example/lib/main.dart +++ b/states_rebuilder_package/example/lib/main.dart @@ -94,7 +94,7 @@ void main() { } class MyApp extends TopStatelessWidget { - const MyApp({Key key}) : super(key: key); + const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -116,7 +116,7 @@ class MyApp extends TopStatelessWidget { class HomeWidget extends StatelessWidget { const HomeWidget({ - Key key, + Key? key, }) : super(key: key); @override @@ -128,7 +128,7 @@ class HomeWidget extends StatelessWidget { OnReactive( () => DropdownButton( value: i18n.locale, - onChanged: (Locale locale) { + onChanged: (Locale? locale) { i18n.locale = locale; }, items: i18n.supportedLocales @@ -171,7 +171,7 @@ class HomeWidget extends StatelessWidget { class RaisedButtonWidget extends StatelessWidget { const RaisedButtonWidget({ - Key key, + Key? key, }) : super(key: key); @override @@ -189,7 +189,7 @@ class RaisedButtonWidget extends StatelessWidget { class HelloNameWidget extends StatelessWidget { const HelloNameWidget({ - Key key, + Key? key, }) : super(key: key); @override @@ -226,7 +226,7 @@ class HelloNameWidget extends StatelessWidget { class TextFieldWidget extends StatelessWidget { const TextFieldWidget({ - Key key, + Key? key, }) : super(key: key); @override @@ -251,7 +251,7 @@ class TextFieldWidget extends StatelessWidget { class StreamNameWidget extends StatelessWidget { const StreamNameWidget({ - Key key, + Key? key, }) : super(key: key); @override diff --git a/states_rebuilder_package/example/pubspec.yaml b/states_rebuilder_package/example/pubspec.yaml index 9481a5de..69de5f41 100644 --- a/states_rebuilder_package/example/pubspec.yaml +++ b/states_rebuilder_package/example/pubspec.yaml @@ -15,7 +15,7 @@ version: 1.0.0+1 publish_to: none environment: - sdk: ">=2.2.2 <3.0.0" + sdk: ">=2.12.0 <3.0.0" dependencies: flutter: @@ -25,7 +25,7 @@ dependencies: # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^0.1.2 + cupertino_icons: any states_rebuilder: path: ../ diff --git a/states_rebuilder_package/lib/scr/development_booster/injected_animation/on_animation_builder.dart b/states_rebuilder_package/lib/scr/development_booster/injected_animation/on_animation_builder.dart index 0514e03d..fbaa5efe 100644 --- a/states_rebuilder_package/lib/scr/development_booster/injected_animation/on_animation_builder.dart +++ b/states_rebuilder_package/lib/scr/development_booster/injected_animation/on_animation_builder.dart @@ -140,7 +140,7 @@ class _OnAnimationBuilderState extends State if (_assertionList.isNotEmpty) { _assertionList.clear(); throw ArgumentError('Duplication of <$T> with the same name is ' - 'not allowed. Use distinct name'); + 'not allowed. Use distinct name. The name is: $name'); } } _assertionList.add(name); @@ -276,9 +276,20 @@ class _OnAnimationBuilderState extends State ); } + void resetState() { + isInitialized = false; + _isDirty = false; + _isChanged = null; + _hasChanged = false; + isSchedulerBinding = false; + _assertionList.clear(); + } + @override void dispose() { _injected.dispose(); + + // resetState(); disposer(); disposeDidUpdateWidget(); disposeAnimationReset(); @@ -291,6 +302,11 @@ class _OnAnimationBuilderState extends State _didUpdateWidget(); } + void didChangeDependencies() { + _didUpdateWidget(); + super.didChangeDependencies(); + } + @override Widget build(BuildContext context) { return widget.builder(animate); diff --git a/states_rebuilder_package/lib/scr/development_booster/injected_form_field/injected_form_field.dart b/states_rebuilder_package/lib/scr/development_booster/injected_form_field/injected_form_field.dart index 3b6e4fa5..0f74ed2d 100644 --- a/states_rebuilder_package/lib/scr/development_booster/injected_form_field/injected_form_field.dart +++ b/states_rebuilder_package/lib/scr/development_booster/injected_form_field/injected_form_field.dart @@ -139,8 +139,8 @@ class InjectedFormFieldImp extends ReactiveModelImp _validateOnValueChange = validateOnValueChange; _focusNode = null; _hasFocus = null; - _isReadOnly = _initialIsReadOnly = isReadOnly; - _isEnabled = _initialIsEnabled = isEnabled; + _isReadOnly = isReadOnly; + _isEnabled = isEnabled; isDirty = false; _initialIsDirtyText = initialValue; }; @@ -157,8 +157,7 @@ class InjectedFormFieldImp extends ReactiveModelImp late VoidCallback? _removeFromInjectedList; late bool? _hasFocus; - late bool? _initialIsEnabled; - late bool? _initialIsReadOnly; + late final VoidCallback _resetDefaultState; T get getState { diff --git a/states_rebuilder_package/lib/scr/development_booster/injected_i18n/injected_i18n.dart b/states_rebuilder_package/lib/scr/development_booster/injected_i18n/injected_i18n.dart index 7c1ac33a..112dadfb 100644 --- a/states_rebuilder_package/lib/scr/development_booster/injected_i18n/injected_i18n.dart +++ b/states_rebuilder_package/lib/scr/development_booster/injected_i18n/injected_i18n.dart @@ -231,7 +231,7 @@ class InjectedI18NImp with InjectedI18N { } Locale _getSystemLocale() { - return WidgetsBinding.instance.window.locale; + return WidgetsBinding.instance.platformDispatcher.locale; } @override diff --git a/states_rebuilder_package/lib/scr/development_booster/injected_scrolling/injected_scrolling.dart b/states_rebuilder_package/lib/scr/development_booster/injected_scrolling/injected_scrolling.dart index 3b65fca6..61878b8e 100644 --- a/states_rebuilder_package/lib/scr/development_booster/injected_scrolling/injected_scrolling.dart +++ b/states_rebuilder_package/lib/scr/development_booster/injected_scrolling/injected_scrolling.dart @@ -188,11 +188,11 @@ class InjectedScrollingImp extends ReactiveModelImp hasReachedMinExtent = false; hasReachedMaxExtent = true; SchedulerBinding.instance.addPostFrameCallback((timeStamp) { + if (_controller == null) { + return; + } if (_maxScrollExtent != position.maxScrollExtent) { _maxScrollExtent = position.maxScrollExtent; - if (_controller == null) { - return; - } _setState(); } }); @@ -261,6 +261,7 @@ class InjectedScrollingImp extends ReactiveModelImp @override void dispose() { _controller?.dispose(); + _controller == null; _removeFromInjectedList?.call(); _resetDefaultState(); super.dispose(); diff --git a/states_rebuilder_package/lib/scr/development_booster/injected_theme/injected_theme.dart b/states_rebuilder_package/lib/scr/development_booster/injected_theme/injected_theme.dart index 71b8c0ab..4796d0cc 100644 --- a/states_rebuilder_package/lib/scr/development_booster/injected_theme/injected_theme.dart +++ b/states_rebuilder_package/lib/scr/development_booster/injected_theme/injected_theme.dart @@ -272,7 +272,7 @@ class InjectedThemeImp with InjectedTheme { } Brightness _getSystemBrightness() { - return WidgetsBinding.instance.window.platformBrightness; + return WidgetsBinding.instance.platformDispatcher.platformBrightness; } ///Toggle the current theme between dark and light diff --git a/states_rebuilder_package/lib/scr/navigation/injected_navigator.dart b/states_rebuilder_package/lib/scr/navigation/injected_navigator.dart index 8929342d..f7622535 100644 --- a/states_rebuilder_package/lib/scr/navigation/injected_navigator.dart +++ b/states_rebuilder_package/lib/scr/navigation/injected_navigator.dart @@ -109,8 +109,7 @@ class InjectedNavigator implements NavigationBuilder { Animation animation, Animation secondAnimation, Widget child, - )? - transitionsBuilder, + )? transitionsBuilder, }) { return _navigationBuilder.to( routeName, @@ -202,6 +201,12 @@ class InjectedNavigator implements NavigationBuilder { Map? queryParams, bool fullscreenDialog = false, bool maintainState = true, + Widget Function( + BuildContext context, + Animation animation, + Animation secondAnimation, + Widget child, + )? transitionsBuilder, }) { return _navigationBuilder.toReplacement( routeName, @@ -210,6 +215,7 @@ class InjectedNavigator implements NavigationBuilder { queryParams: queryParams, fullscreenDialog: fullscreenDialog, maintainState: maintainState, + transitionsBuilder: transitionsBuilder, ); } @@ -338,7 +344,7 @@ class InjectedNavigator implements NavigationBuilder { Future toCupertinoModalPopup( Widget cupertinoModalPopup, { ImageFilter? filter, - bool? semanticsDismissible, + bool semanticsDismissible = false, bool postponeToNextFrame = false, }) => _navigationBuilder.toCupertinoModalPopup( @@ -397,8 +403,7 @@ InjectedNavigator createNavigator({ Animation animation, Animation secondAnimation, Widget child, - )? - transitionsBuilder, + )? transitionsBuilder, Duration? transitionDuration, Redirect? Function(RouteData data)? onNavigate, bool? Function(RouteData? data)? onNavigateBack, diff --git a/states_rebuilder_package/lib/scr/state_management/listeners/reactive_stateless_widget.dart b/states_rebuilder_package/lib/scr/state_management/listeners/reactive_stateless_widget.dart index 8ca48a66..4b76791e 100644 --- a/states_rebuilder_package/lib/scr/state_management/listeners/reactive_stateless_widget.dart +++ b/states_rebuilder_package/lib/scr/state_management/listeners/reactive_stateless_widget.dart @@ -161,7 +161,8 @@ class _ReactiveStatelessWidgetState _obs2![rm] = rm.addObserver( isSideEffects: false, listener: (rm) { - if (widget.shouldRebuildWidget(rm.oldSnapState!, rm._snapState)) { + if (rm.oldSnapState != null && + widget.shouldRebuildWidget(rm.oldSnapState!, rm._snapState)) { setState(() {}); } widget.didNotifyWidget(rm._snapState); diff --git a/states_rebuilder_package/lib/scr/state_management/listeners/top_stateless_widget.dart b/states_rebuilder_package/lib/scr/state_management/listeners/top_stateless_widget.dart index 2294a199..1134a472 100644 --- a/states_rebuilder_package/lib/scr/state_management/listeners/top_stateless_widget.dart +++ b/states_rebuilder_package/lib/scr/state_management/listeners/top_stateless_widget.dart @@ -164,6 +164,7 @@ class _TopStatelessWidgetState extends State { final Map _obs = {}; bool isWaiting = false; dynamic error; + StackTrace? stacktrace; // InjectedI18N? injectedI18N; final Set inheritedInjects = {}; bool get isInheritedInjectsWaiting => @@ -261,10 +262,11 @@ class _TopStatelessWidgetState extends State { isWaiting = false; error = null; }); - } catch (e) { + } catch (e, s) { setState(() { isWaiting = false; error = e; + stacktrace = s; }); } } @@ -297,6 +299,7 @@ class _TopStatelessWidgetState extends State { Widget getErrorWidget(BuildContext context) { final child = widget.errorScreen(error, _ensureInitialization); if (child == null) { + StatesRebuilerLogger.log('', error, stacktrace); throw error; } return MaterialApp( diff --git a/states_rebuilder_package/lib/scr/state_management/reactive_model/injected/injected_imp.dart b/states_rebuilder_package/lib/scr/state_management/reactive_model/injected/injected_imp.dart index bc21250c..0eae70b9 100644 --- a/states_rebuilder_package/lib/scr/state_management/reactive_model/injected/injected_imp.dart +++ b/states_rebuilder_package/lib/scr/state_management/reactive_model/injected/injected_imp.dart @@ -108,7 +108,9 @@ class InjectedImp extends ReactiveModelImp implements Injected { void _injectMock(dynamic Function() fakeCreator) { dispose(); + // // if (bool.fromEnvironment('test')) { RM.disposeAll(); + // // } cachedCreatorMocks.add(fakeCreator); } @@ -306,7 +308,7 @@ class InjectedImp extends ReactiveModelImp implements Injected { sideEffects?.onSetState?.call(snap); }, ), - autoDisposeWhenNotUsed: true, + autoDisposeWhenNotUsed: autoDisposeWhenNotUsed, stateInterceptor: null, dependsOn: null, watch: null, diff --git a/states_rebuilder_package/lib/scr/state_management/reactive_model/reactive_model_imp.dart b/states_rebuilder_package/lib/scr/state_management/reactive_model/reactive_model_imp.dart index 0d130632..5f12bf2e 100644 --- a/states_rebuilder_package/lib/scr/state_management/reactive_model/reactive_model_imp.dart +++ b/states_rebuilder_package/lib/scr/state_management/reactive_model/reactive_model_imp.dart @@ -16,6 +16,7 @@ class ReactiveModelImp extends ReactiveModel { final StateInterceptor? stateInterceptorGlobal; late SnapState _snapState; late bool isInitialized; + bool get isStateInitialized => isInitialized; late VoidCallback? removeFromReactiveModel; late Completer? completer; late Timer? _debounceTimer; diff --git a/states_rebuilder_package/lib/scr/state_management/reactive_model/snap_state.dart b/states_rebuilder_package/lib/scr/state_management/reactive_model/snap_state.dart index 4ee9be3a..1ce8f27d 100644 --- a/states_rebuilder_package/lib/scr/state_management/reactive_model/snap_state.dart +++ b/states_rebuilder_package/lib/scr/state_management/reactive_model/snap_state.dart @@ -92,7 +92,7 @@ class SnapState { StatesRebuilerLogger.log( '', 'OR, TRY DEFINING THE INITIAL STATE OR HANDLE THE ERROR STATUS', - snapError!.stackTrace, + StackTrace.current, ); } else if (isWaiting) { StatesRebuilerLogger.log( @@ -102,6 +102,7 @@ class SnapState { StatesRebuilerLogger.log( '', 'OTHERWISE, TRY DEFINING THE INITIAL STATE OR HANDLE THE WAITING STATUS', + StackTrace.current, ); } diff --git a/states_rebuilder_package/lib/scr/state_management/rm.dart b/states_rebuilder_package/lib/scr/state_management/rm.dart index 6be328d0..2c5ecc9c 100644 --- a/states_rebuilder_package/lib/scr/state_management/rm.dart +++ b/states_rebuilder_package/lib/scr/state_management/rm.dart @@ -692,8 +692,7 @@ abstract class RM { SnapState? Function( SnapState currentSnap, SnapState nextSnap, - )? - stateInterceptor, + )? stateInterceptor, SideEffects? sideEffects, // String? debugPrintWhenNotifiedPreMessage, @@ -961,8 +960,7 @@ abstract class RM { SnapState>? Function( SnapState> currentSnap, SnapState> nextSnap, - )? - stateInterceptor, + )? stateInterceptor, // int undoStackLength = 0, DependsOn>? dependsOn, @@ -1125,8 +1123,7 @@ abstract class RM { SnapState? Function( SnapState currentSnap, SnapState nextSnap, - )? - stateInterceptor, + )? stateInterceptor, SideEffects? sideEffects, // int undoStackLength = 0, @@ -1137,7 +1134,7 @@ abstract class RM { String? debugPrintWhenNotifiedPreMessage, Object? Function(T?)? toDebugString, }) { - return InjectedThemeImp( + return InjectedThemeImp( lightThemes: lightThemes, darkThemes: darkThemes, themeModel: themeMode, @@ -1271,8 +1268,7 @@ abstract class RM { SnapState? Function( SnapState currentSnap, SnapState nextSnap, - )? - stateInterceptor, + )? stateInterceptor, SideEffects? sideEffects, // DependsOn? dependsOn, @@ -2127,7 +2123,8 @@ you had $_envMapLength flavors and you are defining ${impl.length} flavors. // } if (_contextSet.isNotEmpty) { - final renderObject = _contextSet.last.findRenderObject(); + final renderObject = + _contextSet.last.mounted ? _contextSet.last.findRenderObject() : null; if (renderObject != null && renderObject.attached != true) { _contextSet.removeLast(); // ignore: recursive_getters @@ -2353,8 +2350,7 @@ you had $_envMapLength flavors and you are defining ${impl.length} flavors. Animation animation, Animation secondAnimation, Widget child, - )? - transitionsBuilder, + )? transitionsBuilder, Duration? transitionDuration, Redirect? Function(RouteData data)? onNavigate, bool? Function(RouteData? data)? onNavigateBack, diff --git a/states_rebuilder_package/pubspec.yaml b/states_rebuilder_package/pubspec.yaml index fa7a0018..e359b9b2 100644 --- a/states_rebuilder_package/pubspec.yaml +++ b/states_rebuilder_package/pubspec.yaml @@ -1,8 +1,7 @@ name: states_rebuilder description: a simple yet powerful state management technique for Flutter -version: 6.2.0 +version: 6.3.0 homepage: https://github.com/GIfatahTH/states_rebuilder -# publish_to: none environment: sdk: ">=2.12.0 <3.0.0" @@ -13,7 +12,7 @@ dependencies: sdk: flutter collection: ^1.14.11 meta: ^1.7.0 - navigation_builder: ^0.0.2+4 + navigation_builder: ^0.0.3 dev_dependencies: flutter_test: diff --git a/states_rebuilder_package/test/development_booster/injected_i18n/injected_i18n_test.dart b/states_rebuilder_package/test/development_booster/injected_i18n/injected_i18n_test.dart index 59644225..8be09969 100644 --- a/states_rebuilder_package/test/development_booster/injected_i18n/injected_i18n_test.dart +++ b/states_rebuilder_package/test/development_booster/injected_i18n/injected_i18n_test.dart @@ -1,4 +1,4 @@ -// ignore_for_file: use_key_in_widget_constructors, file_names, prefer_const_constructors +// ignore_for_file: use_key_in_widget_constructors, file_names, prefer_const_constructors, unused_local_variable import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:states_rebuilder/states_rebuilder.dart'; @@ -495,6 +495,7 @@ void main() async { nextSnap.snapError?.error.message == 'Error') { return currentSnap.copyToHasData('arabic'); } + return null; }, sideEffects: SideEffects( onSetState: (_) { diff --git a/states_rebuilder_package/test/development_booster/injected_srolling/injected_srolling_test.dart b/states_rebuilder_package/test/development_booster/injected_srolling/injected_srolling_test.dart index 51e89b5f..b05b3b39 100644 --- a/states_rebuilder_package/test/development_booster/injected_srolling/injected_srolling_test.dart +++ b/states_rebuilder_package/test/development_booster/injected_srolling/injected_srolling_test.dart @@ -392,17 +392,14 @@ void main() { expect(find.text('hasStartedDown'), findsNothing); expect(find.text('hasEnded'), findsNothing); // - final disposer = animation.addObserver( - listener: (snap) async { - await tester.drag(find.byType(ListView), - Offset(0, -(animation.controller!.value + 1))); - }, - shouldAutoClean: true, - ); animation.controller!.forward(); + scroll.moveTo(double.infinity, duration: const Duration(seconds: 3)); // await tester.pump(); + await tester.pump(const Duration(milliseconds: 500)); + await tester.pump(const Duration(milliseconds: 500)); + await tester.pump(); expect(isTop, false); expect(isBottom, false); expect(isScrolling, true); @@ -505,6 +502,7 @@ void main() { expect(find.text('hasEnded'), findsNothing); await tester.pump(Duration(milliseconds: 300)); }, + skip: true, ); testWidgets( diff --git a/states_rebuilder_package/test/development_booster/injected_theme/injected_theme_test.dart b/states_rebuilder_package/test/development_booster/injected_theme/injected_theme_test.dart index f833a2c1..043fb80b 100644 --- a/states_rebuilder_package/test/development_booster/injected_theme/injected_theme_test.dart +++ b/states_rebuilder_package/test/development_booster/injected_theme/injected_theme_test.dart @@ -351,6 +351,7 @@ void main() async { stateInterceptor: (currentSnap, nextSnap) { _snapState = currentSnap; _nextSnapState = nextSnap; + return null; }, ); (theme as InjectedThemeImp).isLinkedToTopStatelessWidget = true; @@ -440,12 +441,14 @@ void main() async { expect(brightness, Brightness.light); expect(secondaryColors, secondaryLightColor); expect(theme.isDarkTheme, false); - tester.binding.window.platformBrightnessTestValue = Brightness.dark; + tester.binding.platformDispatcher.platformBrightnessTestValue = + Brightness.dark; await tester.pumpAndSettle(); expect(brightness, Brightness.dark); expect(secondaryColors, secondaryDarkColor); expect(theme.isDarkTheme, true); - tester.binding.window.platformBrightnessTestValue = Brightness.light; + tester.binding.platformDispatcher.platformBrightnessTestValue = + Brightness.light; }, ); @@ -483,11 +486,13 @@ void main() async { await tester.pumpWidget(widget); expect(brightness, Brightness.light); expect(theme.isDarkTheme, false); - tester.binding.window.platformBrightnessTestValue = Brightness.dark; + tester.binding.platformDispatcher.platformBrightnessTestValue = + Brightness.dark; await tester.pumpAndSettle(); expect(brightness, Brightness.dark); expect(theme.isDarkTheme, true); - tester.binding.window.platformBrightnessTestValue = Brightness.light; + tester.binding.platformDispatcher.platformBrightnessTestValue = + Brightness.light; }, ); testWidgets( diff --git a/states_rebuilder_package/test/navigation.dart/rm_navigate_test.dart b/states_rebuilder_package/test/navigation.dart/rm_navigate_test.dart index 66b97c12..7bd3ebe4 100644 --- a/states_rebuilder_package/test/navigation.dart/rm_navigate_test.dart +++ b/states_rebuilder_package/test/navigation.dart/rm_navigate_test.dart @@ -704,11 +704,11 @@ void main() { final page3 = (_) => Text('$_'); final page4 = (_) => Text('$_'); final page5 = (_) => Text('$_'); - final page52 = (_) => Text('$_'); - final page521 = (_) => Text('$_'); + // final page52 = (_) => Text('$_'); + // final page521 = (_) => Text('$_'); Map pathParams = {}; - Map queryParams = {}; + // Map queryParams = {}; String routePath = ''; String baseUrl = ''; final routes = { @@ -756,7 +756,7 @@ void main() { routes: { '/': (data) => Builder( builder: (__) { - queryParams = data.queryParams; + // queryParams = data.queryParams; pathParams = data.pathParams; routePath = data.path; baseUrl = data.baseLocation; @@ -766,7 +766,7 @@ void main() { '/page51': (data) { return Builder( builder: (ctx) { - queryParams = ctx.routeData.queryParams; + // queryParams = ctx.routeData.queryParams; pathParams = ctx.routeData.pathParams; routePath = ctx.routeData.path; baseUrl = ctx.routeData.baseLocation; @@ -779,7 +779,7 @@ void main() { '/': (_) { return Builder( builder: (ctx) { - queryParams = ctx.routeData.queryParams; + // queryParams = ctx.routeData.queryParams; pathParams = ctx.routeData.pathParams; routePath = ctx.routeData.path; baseUrl = ctx.routeData.baseLocation; @@ -795,7 +795,7 @@ void main() { }, '/:page521ID': (_) => Builder( builder: (ctx) { - queryParams = ctx.routeData.queryParams; + // queryParams = ctx.routeData.queryParams; pathParams = ctx.routeData.pathParams; routePath = ctx.routeData.path; baseUrl = ctx.routeData.baseLocation; diff --git a/states_rebuilder_package/test/navigation.dart/rm_navigator2_test.dart b/states_rebuilder_package/test/navigation.dart/rm_navigator2_test.dart index 54ba2e1e..4d8dd123 100644 --- a/states_rebuilder_package/test/navigation.dart/rm_navigator2_test.dart +++ b/states_rebuilder_package/test/navigation.dart/rm_navigator2_test.dart @@ -1699,7 +1699,7 @@ void main() { }; final widget = _TopWidget(routers: routes); await tester.pumpWidget(widget); - dynamic message; + _navigator.to('/page1'); await tester.pumpAndSettle(); _navigator.to('/page2'); @@ -5877,12 +5877,19 @@ class NavigatorMock extends InjectedNavigator { @override Future toReplacement( - String routeName, - {TO? result, - Object? arguments, - Map? queryParams, - bool fullscreenDialog = false, - bool maintainState = true}) async { + String routeName, { + TO? result, + Object? arguments, + Map? queryParams, + bool fullscreenDialog = false, + bool maintainState = true, + Widget Function( + BuildContext context, + Animation animation, + Animation secondAnimation, + Widget child, + )? transitionsBuilder, + }) async { message = 'toReplacement'; } } diff --git a/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/15-localizations_test.dart b/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/15-localizations_test.dart index 37be4dc6..e400bfc7 100644 --- a/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/15-localizations_test.dart +++ b/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/15-localizations_test.dart @@ -35,7 +35,8 @@ Locale? _localeFromTheApp; final currentLocale = RM.inject( //return the stored locale or if null return the system locale - () => _storedLocale ?? WidgetsBinding.instance.window.locales.first, + () => + _storedLocale ?? WidgetsBinding.instance.platformDispatcher.locales.first, // debugPrintWhenNotifiedPreMessage: '', ); @@ -194,7 +195,8 @@ void main() { currentLocale.injectMock( () => _storedLocale ?? - (_systemLocale ?? WidgetsBinding.instance.window.locales.first), + (_systemLocale ?? + WidgetsBinding.instance.platformDispatcher.locales.first), ); await tester.pumpWidget(LocalizationsApp()); expect(find.text('Getting the json String ...'), findsOneWidget); diff --git a/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/16-localizations_with_plurals_and_formula_test.dart b/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/16-localizations_with_plurals_and_formula_test.dart index 346f5180..4e0aa060 100644 --- a/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/16-localizations_with_plurals_and_formula_test.dart +++ b/states_rebuilder_package/test/state_management.dart/injected_a_to_z.dart/16-localizations_with_plurals_and_formula_test.dart @@ -56,7 +56,8 @@ Locale? _localeFromTheApp; final currentLocale = RM.inject( //return the stored locale or if null return the system locale - () => _storedLocale ?? WidgetsBinding.instance.window.locales.first, + () => + _storedLocale ?? WidgetsBinding.instance.platformDispatcher.locales.first, //Each time the currentLocale is changed, we refresh the i18n so it load the //right json file. // onData: (_) => i18n.refresh(), diff --git a/states_rebuilder_package/test/state_management.dart/injected_test.dart b/states_rebuilder_package/test/state_management.dart/injected_test.dart index 0e27a3f3..2f60548c 100644 --- a/states_rebuilder_package/test/state_management.dart/injected_test.dart +++ b/states_rebuilder_package/test/state_management.dart/injected_test.dart @@ -8,7 +8,7 @@ import 'package:states_rebuilder/states_rebuilder.dart'; import 'fake_classes/models.dart'; final vanillaModel = RM.inject(() => VanillaModel()); -final streamVanillaModel = RM.injectStream( +final streamVanillaModel = RM.injectStream( () => Stream.periodic(Duration(seconds: 1), (n) => n < 3 ? VanillaModel(n) : VanillaModel(3)).take(6), watch: (model) => model?.counter, @@ -610,22 +610,22 @@ void main() { testWidgets( 'autoDispose dependent injected model1', (tester) async { - bool counter1IsDisposed = false; - bool counter2IsDisposed = false; + // bool counter1IsDisposed = false; + // bool counter2IsDisposed = false; bool counter3IsDisposed = false; final counter1 = RM.inject( () => 0, - sideEffects: SideEffects( - dispose: () => counter1IsDisposed = true, - ), + // sideEffects: SideEffects( + // dispose: () => counter1IsDisposed = true, + // ), // debugPrintWhenNotifiedPreMessage: true,: 'counter1', ); final counter2 = RM.inject( () => counter1.state, dependsOn: DependsOn({counter1}), - sideEffects: SideEffects( - dispose: () => counter2IsDisposed = true, - ), + // sideEffects: SideEffects( + // dispose: () => counter2IsDisposed = true, + // ), // debugPrintWhenNotifiedPreMessage: true,: 'counter2', ); final counter3 = RM.inject( diff --git a/states_rebuilder_package/test/state_management.dart/injector1_test.dart b/states_rebuilder_package/test/state_management.dart/injector1_test.dart index e69dcf80..1fe8896d 100644 --- a/states_rebuilder_package/test/state_management.dart/injector1_test.dart +++ b/states_rebuilder_package/test/state_management.dart/injector1_test.dart @@ -506,7 +506,9 @@ void main() { vm.notify(); await tester.pump(); expect(numberOFRebuild1, equals(2)); - model1.setState((_) {}); + model1.setState((_) { + return null; + }); await tester.pump(); expect(numberOFRebuild1, equals(3)); }, @@ -788,8 +790,8 @@ void main() { }); testWidgets('Injector appLifeCycle works', (WidgetTester tester) async { - final BinaryMessenger defaultBinaryMessenger = - ServicesBinding.instance.defaultBinaryMessenger; + final TestDefaultBinaryMessenger defaultBinaryMessenger = + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; AppLifecycleState? lifecycleState; final widget = Injector( inject: [Inject(() => VanillaModel())], diff --git a/states_rebuilder_package/test/state_management.dart/on_builder_test.dart b/states_rebuilder_package/test/state_management.dart/on_builder_test.dart index ad2c10fc..5ec7eb96 100644 --- a/states_rebuilder_package/test/state_management.dart/on_builder_test.dart +++ b/states_rebuilder_package/test/state_management.dart/on_builder_test.dart @@ -550,8 +550,8 @@ void main() { 'Test onBuilder.bindingObserver', (tester) async { List? locales; - final BinaryMessenger defaultBinaryMessenger = - ServicesBinding.instance.defaultBinaryMessenger; + final TestDefaultBinaryMessenger defaultBinaryMessenger = + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; AppLifecycleState? lifecycleState; final widget = OnBuilder.bindingObserver( didChangeAppLifecycleState: (context, state) { diff --git a/states_rebuilder_package/test/state_management.dart/reactive_model_test.dart b/states_rebuilder_package/test/state_management.dart/reactive_model_test.dart index e75a6f63..94e2e8d8 100644 --- a/states_rebuilder_package/test/state_management.dart/reactive_model_test.dart +++ b/states_rebuilder_package/test/state_management.dart/reactive_model_test.dart @@ -1,4 +1,4 @@ -// ignore_for_file: use_key_in_widget_constructors, file_names, prefer_const_constructors, body_might_complete_normally_nullable +// ignore_for_file: use_key_in_widget_constructors, file_names, prefer_const_constructors, body_might_complete_normally_nullable, unused_result import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; diff --git a/states_rebuilder_package/test/state_management.dart/show_cases/injected_test.dart b/states_rebuilder_package/test/state_management.dart/show_cases/injected_test.dart index c63b9213..ed965f89 100644 --- a/states_rebuilder_package/test/state_management.dart/show_cases/injected_test.dart +++ b/states_rebuilder_package/test/state_management.dart/show_cases/injected_test.dart @@ -1,4 +1,4 @@ -// ignore_for_file: use_key_in_widget_constructors, file_names, prefer_const_constructors, deprecated_member_use_from_same_package +// ignore_for_file: use_key_in_widget_constructors, file_names, prefer_const_constructors, deprecated_member_use_from_same_package, unused_result import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:states_rebuilder/scr/state_management/rm.dart'; @@ -271,7 +271,6 @@ void main() { dependsOn: DependsOn({dependentCounter1}), ); int numberOfNotification = 0; - // ignore: unused_result dependentCounter2.addObserver( listener: (rm) { numberOfNotification++; diff --git a/states_rebuilder_package/test/state_management.dart/state_builder_test.dart b/states_rebuilder_package/test/state_management.dart/state_builder_test.dart index e63deabf..e129d563 100644 --- a/states_rebuilder_package/test/state_management.dart/state_builder_test.dart +++ b/states_rebuilder_package/test/state_management.dart/state_builder_test.dart @@ -924,7 +924,7 @@ void main() { }, ); // - model1.addCleaner(() { + final disposer = model1.addCleaner(() { numberOfCleaner++; }); // @@ -937,6 +937,7 @@ void main() { expect(numberOfDidUpdateWidget, equals(1)); expect(numberOfCleaner, equals(0)); + disposer(); }); } diff --git a/states_rebuilder_package/test/state_management.dart/state_with_mixin_builder_test.dart b/states_rebuilder_package/test/state_management.dart/state_with_mixin_builder_test.dart index 688f17e0..a5317db1 100644 --- a/states_rebuilder_package/test/state_management.dart/state_with_mixin_builder_test.dart +++ b/states_rebuilder_package/test/state_management.dart/state_with_mixin_builder_test.dart @@ -579,8 +579,8 @@ void main() { testWidgets('StateWithMixinBuilder appLifeCycle works', (WidgetTester tester) async { - final BinaryMessenger defaultBinaryMessenger = - ServicesBinding.instance.defaultBinaryMessenger; + final TestDefaultBinaryMessenger defaultBinaryMessenger = + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; AppLifecycleState? lifecycleState; final widget = StateWithMixinBuilder( mixinWith: MixinWith.widgetsBindingObserver, diff --git a/states_rebuilder_package/test/state_management.dart/top_stateless_widget_test.dart b/states_rebuilder_package/test/state_management.dart/top_stateless_widget_test.dart index e271820c..0f910342 100644 --- a/states_rebuilder_package/test/state_management.dart/top_stateless_widget_test.dart +++ b/states_rebuilder_package/test/state_management.dart/top_stateless_widget_test.dart @@ -379,8 +379,8 @@ void main() { }, ); testWidgets('appLifeCycle works', (WidgetTester tester) async { - final BinaryMessenger defaultBinaryMessenger = - ServicesBinding.instance.defaultBinaryMessenger; + final TestDefaultBinaryMessenger defaultBinaryMessenger = + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; AppLifecycleState? lifecycleState; _didChangeAppLifecycleState = (state) {