I've run into an error I can't quite figure out. I'm calling the service from the action and setting a new redux state with th response. However, I get the following error:

Error:

The argument type 'List<Chat> (C:\flutter\bin\cache\pkg\sky_engine\lib\core\list.dart)' can't be assigned to the parameter type 'List<Chat> (C:\flutter\bin\cache\pkg\sky_engine\lib\core\list.dart)'.

Action:

class GetChatRequest {}

class GetChatSuccess {
  final List<Chat> history;

  GetChatSuccess(this.history);
}

class GetChatFailure {
  final String error;

  GetChatFailure(this.error);
}

final Function getLastChatMessages = () {
  return (Store<AppState> store) {
    var chatService = new ChatService(store);

    store.dispatch(new GetChatRequest());
    chatService.getLast50Messages().then((history) {
      store.dispatch(new GetChatSuccess(history));
    });
  };
};

Service:

Future<List<Chat>> getLast50Messages() async {
    final response = await webClient.get('xxxx');
    return response['data'].map<Chat>((e) => new Chat.fromJSON(e)).toList();
  }


Solution 1: Günter Zöchbauer

Change

store.dispatch(new GetChatSuccess(history));

to

store.dispatch(new GetChatSuccess(List<Chat>.from(history)));

to get a properly typed list.

history is a List<dynamic> that contains only Chat elements, but the list has still the generic type dynamic. To create a properly typed List<Chat> create a new list with that type and fill it with the elements from history.

See also https://api.dartlang.org/stable/2.1.0/dart-core/List/List.from.html