Getting this error on start of the app. Initially I thought its a Migration to AndroidX issue, did all the steps to migrate to androidx support library, to no avail.
Not able to debug since I get this error before the breakpoint at first line of the main function hits.
Error
Built build/app/outputs/apk/debug/app-debug.apk.
Installing build/app/outputs/apk/app.apk...
E/flutter (30114): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: type 'List<String>' is not a subtype of type 'ReactiveFeedsRepository' of 'feedsRepository'
E/flutter (30114): #0 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:185:38)
E/flutter (30114): #1 _rootRun (dart:async/zone.dart:1124:13)
E/flutter (30114): #2 _CustomZone.run (dart:async/zone.dart:1021:19)
E/flutter (30114): #3 _runZoned (dart:async/zone.dart:1516:10)
E/flutter (30114): #4 runZoned (dart:async/zone.dart:1500:12)
E/flutter (30114): #5 _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:180:5)
E/flutter (30114): #6 _startIsolate.<anonymous closure> (dart:isolate/runtime/libisolate_patch.dart:300:19)
E/flutter (30114): #7 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
E/flutter (30114):
Syncing files to device ONEPLUS A5000...
V/FA (30114): Inactivity, disconnecting from the service
My Flutter Doctor
[✓] Flutter (Channel stable, v1.2.1, on Mac OS X 10.13.6 17G65, locale en-SG)
• Flutter version 1.2.1 at /Users/harshvardhan/Documents/work/portable/flutter
• Framework revision 8661d8aecd (13 days ago), 2019-02-14 19:19:53 -0800
• Engine revision 3757390fa4
• Dart version 2.1.2 (build 2.1.2-dev.0.0 0a7dcf17eb)
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
• Android SDK at /Users/harshvardhan/Library/Android/sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-28, build-tools 28.0.3
• ANDROID_HOME = /Users/harshvardhan/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
• All Android licenses accepted.
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 10.1, Build version 10B61
• ios-deploy 2.0.0
• CocoaPods version 1.5.3
[✓] Android Studio (version 3.3)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin version 33.3.1
• Dart plugin version 182.5215
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1248-b01)
[✓] Connected device (1 available)
• ONEPLUS A5000 • fe6f9295 • android-arm64 • Android 9 (API 28)
Main.dart
void main([
ReactiveTodosRepository todosRepository,
ReactiveFeedsRepository feedsRepository,
ReactiveUserFeedsRepository userFeedsRepository,
ReactiveAuditRepository auditRepository,
UserFirebaseRepository userRepository,
SCUserRepositoryImpl scUserRepository
]) async {
bool isInDebugMode = true;
SystemChrome.setPreferredOrientations([
DeviceOrientation.portraitDown,
DeviceOrientation.portraitUp,
]);
FlutterError.onError = (FlutterErrorDetails details) {
if (isInDebugMode) {
// In development mode simply print to console.
FlutterError.dumpErrorToConsole(details);
} else {
// In production mode report to the application zone to report to
// Crashlytics.
Zone.current.handleUncaughtError(details.exception, details.stack);
}
};
await FlutterCrashlytics().initialize();
runZoned<Future<Null>>(() async {
runApp(ReduxApp(
todosRepository: todosRepository,
feedsRepository: feedsRepository,
userFeedsRepository: userFeedsRepository,
auditRepository: auditRepository,
userRepository: userRepository,
scUserRepository: scUserRepository,
));
}, onError: (error, stackTrace) async {
// Whenever an error occurs, call the `reportCrash` function. This will send
// Dart errors to our dev console or Crashlytics depending on the environment.
await FlutterCrashlytics().reportCrash(error, stackTrace, forceCrash: false);
});
}
class ReduxApp extends StatelessWidget {
final Store<AppState> store;
ReduxApp({
Key key,
ReactiveTodosRepository todosRepository,
ReactiveFeedsRepository feedsRepository,
ReactiveUserFeedsRepository userFeedsRepository,
ReactiveAuditRepository auditRepository,
UserFirebaseRepository userRepository,
SCUserRepositoryImpl scUserRepository,
}) : store = Store<AppState>(
appReducer,
initialState: AppState.initial(),
middleware: createStoreTodosMiddleware(
todosRepository ??
FirestoreReactiveTodosRepository(Firestore.instance),
feedsRepository ??
FirestoreReactiveFeedsRepository(Firestore.instance),
userFeedsRepository ??
FirestoreReactiveUserFeedsRepository(Firestore.instance),
auditRepository ?? AuditAPIRepository(),
userRepository ?? FirebaseUserRepository(FirebaseAuth.instance),
scUserRepository ?? SCUserRepositoryImpl(),
),
),
super(key: key) {
store.dispatch(InitAppAction());
}
@override
Widget build(BuildContext context) {
return StoreProvider(
store: store,
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: FirestoreReduxLocalizations().appTitle,
theme: ArchSampleTheme.theme,
localizationsDelegates: [
ArchSampleLocalizationsDelegate(),
FirestoreReduxLocalizationsDelegate(),
],
routes: {
ArchSampleRoutes.signin: (context) => SignIn(),
ArchSampleRoutes.newPassword: (context) => NewPassword(),
ArchSampleRoutes.home: (context) => HomeScreen(),
ArchSampleRoutes.analytics: (context) => Chart(),
ArchSampleRoutes.addTodo: (context) => AddTodo(),
ArchSampleRoutes.forgotPasswordEmailPrompt: (context) => ForgotPasswordEmailPromptScreen(),
ArchSampleRoutes.forgotPasswordOtpPrompt: (context) => ForgotPasswordOtpPromptScreen(),
},
),
);
}
}
I faced a similar problem when I migrated Flutter from 1.0.3 to 1.2.1. What I found out the problem is related to the parameter defined on the void main
method. Those parameters are never passed when main is called. To fix this you can remove those params and make the following changes to the other places where it's being used.
void main() async {
.
.
.
runZoned<Future<Null>>(() async {
runApp(ReduxApp());
.
.
.
ReduxApp({
Key key}) : store = Store<AppState>(
appReducer,
initialState: AppState.initial(),
middleware: createStoreTodosMiddleware(
FirestoreReactiveTodosRepository(Firestore.instance),
FirestoreReactiveFeedsRepository(Firestore.instance),
FirestoreReactiveUserFeedsRepository(Firestore.instance),
AuditAPIRepository(),
FirebaseUserRepository(FirebaseAuth.instance),
SCUserRepositoryImpl(),
),
.
.
.
This is a type mismatch error make sure your return type is same as the variable type
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With