【发布时间】:2022-01-08 18:34:44
【问题描述】:
我正在尝试使用sqflite 插件来使用 SQLite 数据库。运行下面的应用程序会导致 Unhandled Exception: MissingPluginException 错误。
这是我的代码:
main.dart:
...
late final Database database;
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
database = await openDatabase(
join(await getDatabasesPath(), 'mydb.db'),
version: 1,
onCreate: (db, version) {
return db.execute('CREATE TABLE config(key TEXT PRIMARY KEY, value TEXT)');
},
);
runApp(MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
title: 'MyApp',
initialRoute: '/',
onGenerateRoute: (settings) => onGenerateRoute(settings),
onUnknownRoute: pageNotImplementedRoute,
);
}
}
Route? onGenerateRoute(RouteSettings settings) {
...
}
Route pageNotImplementedRoute(RouteSettings settings) {
return MaterialPageRoute<void>(...);
}
这是运行的输出:
Launching lib\main.dart on Android SDK built for x86 64 in debug mode...
Running Gradle task 'assembleDebug'...
? Built build\app\outputs\flutter-apk\app-debug.apk.
Installing build\app\outputs\flutter-apk\app.apk...
Debug service listening on ws://127.0.0.1:56398/fJzrmThsqQA=/ws
Syncing files to device Android SDK built for x86 64...
E/flutter ( 6173): [ERROR:flutter/lib/ui/ui_dart_state.cc(209)] Unhandled Exception: MissingPluginException(No implementation found for method getDatabasesPath on channel com.tekartik.sqflite)
E/flutter ( 6173): #0 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:154:7)
E/flutter ( 6173): <asynchronous suspension>
E/flutter ( 6173): #1 wrapDatabaseException (package:sqflite/src/exception_impl.dart:7:20)
E/flutter ( 6173): <asynchronous suspension>
E/flutter ( 6173): #2 SqfliteDatabaseFactoryMixin.getDatabasesPath (package:sqflite_common/src/factory_mixin.dart:152:20)
E/flutter ( 6173): <asynchronous suspension>
E/flutter ( 6173): #3 main (package:mymedica/main.dart:76:10)
E/flutter ( 6173): <asynchronous suspension>
E/flutter ( 6173):
有人知道怎么回事吗?
【问题讨论】:
-
使用 sqflite 包时出错。只需停止并运行应用程序,问题就解决了
-
Simply Run these commands.. either-- Flutter clean or Invalidate Caches/Restart -
已经做了很多次了。结果还是一样。
-
可以分享一下步骤吗
-
在终端:
flutter clean。然后flutter pub get。同样在 Android Studio 中:File - Invalidate caches / Restart...