title: ERROR:flutter/lib/ui/ui_dart_state.cc(148) Unhandled Exception
body: <p>Getting this error on start of the app. Initially I thought its a <strong>Migration to AndroidX</strong> issue, did all the steps to migrate to androidx support library, to no avail. </p>
  
  <ol>
  <li>Posted a Github issue <a href="https://github.com/flutter/flutter/issues/28564" rel="noreferrer">here</a></li>
  <li>Looked for help in comments on <a href="https://github.com/flutter/flutter/issues/27346" rel="noreferrer">similar issue</a>.</li>
  </ol>
  
  <p>Not able to debug since I get this error before the breakpoint at first line of the main function hits.</p>
  
  <p><strong>Error</strong></p>
  
  <pre><code>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&lt;String&gt;' is not a subtype of type 'ReactiveFeedsRepository' of 'feedsRepository'
  E/flutter (30114): #0      _runMainZoned.&lt;anonymous closure&gt;.&lt;anonymous closure&gt; (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.&lt;anonymous closure&gt; (dart:ui/hooks.dart:180:5)
  E/flutter (30114): #6      _startIsolate.&lt;anonymous closure&gt; (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
  </code></pre>
  
  <p><strong>My Flutter Doctor</strong></p>
  
  <pre><code>[✓] 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)
  </code></pre>
  
  <p><strong>Main.dart</strong></p>
  
  <pre><code>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&lt;Future&lt;Null&gt;&gt;(() 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&lt;AppState&gt; store;
    ReduxApp({
      Key key,
      ReactiveTodosRepository todosRepository,
      ReactiveFeedsRepository feedsRepository,
      ReactiveUserFeedsRepository userFeedsRepository,
      ReactiveAuditRepository auditRepository,
      UserFirebaseRepository userRepository,
      SCUserRepositoryImpl scUserRepository,
    })  : store = Store&lt;AppState&gt;(
            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) =&gt; SignIn(),
            ArchSampleRoutes.newPassword: (context) =&gt; NewPassword(),
            ArchSampleRoutes.home: (context) =&gt; HomeScreen(),
            ArchSampleRoutes.analytics: (context) =&gt; Chart(),
            ArchSampleRoutes.addTodo: (context) =&gt; AddTodo(),
            ArchSampleRoutes.forgotPasswordEmailPrompt: (context) =&gt; ForgotPasswordEmailPromptScreen(),
            ArchSampleRoutes.forgotPasswordOtpPrompt: (context) =&gt; ForgotPasswordOtpPromptScreen(),
          },
        ),
      );
    }
  }
  </code></pre>