在应用启动时获取此错误。最初,我认为这是一个迁移到AndroidX 的问题,并完成了所有迁移到androidx支持库的步骤,但无济于事。
无法调试,因为我在命中主函数第一行的断点之前收到了此错误。
错误
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
我的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(),
},
),
);
}
}
答案 0 :(得分:5)
当我将Flutter从1.0.3迁移到1.2.1时,我遇到了类似的问题。我发现问题与void main
方法上定义的参数有关。调用main时,永远不会传递这些参数。要解决此问题,您可以删除这些参数,并对其他使用它的地方进行以下更改。
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(),
),
.
.
.
答案 1 :(得分:0)
这是类型不匹配的错误,请确保您的返回类型与变量类型相同
答案 2 :(得分:0)
请检查请求类型是GET还是POST。如果您调用获取请求以获取发布请求,则会显示此错误。如果请求类型正确,则请检查您的JSON响应是否为JSON格式。 希望对您有所帮助。
答案 3 :(得分:-1)
如果您遇到此错误
Unhandled Exception: MissingPluginException(No implementation found for method getAll on channel plugins.flutter.io/shared_preferences
然后将其添加到main()函数的main.dart中
SharedPreferences.setMockInitialValues({});
此错误在IOS中不显示。