flutter-redux-todo-list
flutter-redux-todo-list copied to clipboard
Problem using --preview-dart-2
Trying to run this app with Dart 2 causes this
compiler message: lib/main.dart:14:17: Error: A value of type '(#lib1::TodoState, #lib2::TodoAction) → #lib1::TodoState' can't be assigned to a variable of type '(dynamic, dynamic) → dynamic'.
compiler message: Try changing the type of the left hand side, or casting the right hand side to '(dynamic, dynamic) → dynamic'.
compiler message: new Store(todoAppReducer, initialState: new TodoState.initialState());
compiler message: ^
[VERBOSE-2:dart_error.cc(16)] Unhandled exception:
'file:///Users/miguel/Projects/flutter-redux-todo-list/lib/main.dart': error: line 14 pos 17: lib/main.dart:14:17: Error: A value of type '(#lib1::TodoState, #lib2::TodoAction) → #lib1::TodoState' can't be assigned to a variable of type '(dynamic, dynamic) → dynamic'.
Try changing the type of the left hand side, or casting the right hand side to '(dynamic, dynamic) → dynamic'.
new Store(todoAppReducer, initialState: new TodoState.initialState());
^
new Store(todoAppReducer, initialState: new TodoState.initialState());
^
#0 main (file:///Users/miguel/Projects/flutter-redux-todo-list/lib/main.dart:9:14)
#1 _startIsolate.<anonymous closure> (dart:isolate/isolate_patch.dart:279:19)
#2 _RawReceivePortImpl._handleMessage (dart:isolate/isolate_patch.dart:165:12)
I tried to solve it by replacing
final Store store = new Store>(todoAppReducer, initialState: new TodoState.initialState());
with
final Store store = new Store<TodoState>(todoAppReducer, initialState: new TodoState.initialState());
in main.dart
. But then I get this error:
[VERBOSE-2:dart_error.cc(16)] Unhandled exception:
'file:///Users/miguel/Projects/flutter-redux-todo-list/lib/main.dart': error: line 14 pos 28: lib/main.dart:14:28: Error: The top level function has type '(#lib1::TodoState, #lib2::TodoAction) → #lib1::TodoState' that isn't of expected type '(#lib1::TodoState, dynamic) → #lib1::TodoState'.
Change the type of the function or the context in which it is used.
new Store<TodoState>(todoAppReducer, initialState: new TodoState.initialState());
^
new Store<TodoState>(todoAppReducer, initialState: new TodoState.initialState());
^
#0 main (file:///Users/miguel/Projects/flutter-redux-todo-list/lib/main.dart:9:14)
#1 _startIsolate.<anonymous closure> (dart:isolate/isolate_patch.dart:279:19)
#2 _RawReceivePortImpl._handleMessage (dart:isolate/isolate_patch.dart:165:12)
Any idea on how to solve it?
Thanks for reporting this @nitrico! The repository pre-dates dart 2 and I haven't tried it with --preview-dart-2
yet, I'll give it a look and update soon.
At a quick glance the culprit is probably todoAppReducer's usage of TodoAction
to specify the action parameter's type, replacing that with dynamic
might unblock you.
Thank you, for the answer and the project :)
Yes, that's what I've tried after that and now it works fine for iOS (both debug and release) and Android in debug mode but not in release. Weird...
I am wanting to dive deeper into state management but I was unable to get this to work for me. I really like this project structure but I am a flutter/dart noob.
At a quick glance the culprit is probably todoAppReducer's usage of TodoAction to specify the action parameter's type, replacing that with dynamic might unblock you.
Wish I could say that was enough to help me get running w/Dart 2 .
I tried changing the 'method signature' to something like ...
List<Todo> todosReducer(List<Todo> state, action)
Which got me closer (starts to load on iPhone 6)... embarrassingly, I'm not sure if that is stupid but it still does not boot :(
type 'Store<dynamic>' is not a subtype of type 'Store<TodoState>'
Fixed that by declaring it specifically ...
final Store<TodoState> store = new Store<TodoState>(todoAppReducer, initialState: new TodoState.initialState());
... but ...
flutter: Another exception was thrown: NoSuchMethodError: The getter 'store' was called on null.
To my eyes, this app looks like a top notch implementation of a simple redux app, wish I could boot it 👍
The function 'todoAppReducer' has type '(TodoState, TodoAction) → TodoState' that isn't of expected type '(TodoState, dynamic) → TodoState'. This means its parameter or return type does not match what is expected.
=> I get this error. So how to resolve it bro????
#6 fix the problem.