簡體   English   中英

在 flutter 中使用 path_provider package 時出錯

[英]Error using path_provider package in flutter

我正在嘗試使用 flutter 中的 path_provider package 獲取應用程序文檔目錄。 我正在使用 hive 數據庫,所以我需要路徑。

這是我的代碼:

void main() async {
  final appDocsDir = await getApplicationDocumentsDirectory(); //error is on this line
  Hive.init(appDocsDir.path);
  runApp(MyApp());
}

我收到此錯誤:

E/flutter (18811): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value
E/flutter (18811): #0      MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:142:86)
E/flutter (18811): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:148:36)
E/flutter (18811): #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:331:12)
E/flutter (18811): #3      MethodChannelPathProvider.getApplicationDocumentsPath (package:path_provider_platform_interface/src/method_channel_path_provider.dart:50:10)
E/flutter (18811): #4      getApplicationDocumentsDirectory (package:path_provider/path_provider.dart:138:40)
E/flutter (18811): #5      main (package:my_app/main.dart:9:28)
E/flutter (18811): #6      _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:142:25)
E/flutter (18811): #7      _rootRun (dart:async/zone.dart:1354:13)
E/flutter (18811): #8      _CustomZone.run (dart:async/zone.dart:1258:19)
E/flutter (18811): #9      _runZoned (dart:async/zone.dart:1789:10)
E/flutter (18811): #10     runZonedGuarded (dart:async/zone.dart:1777:12)
E/flutter (18811): #11     _runMainZoned.<anonymous closure> (dart:ui/hooks.dart:138:5)
E/flutter (18811): #12     _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:283:19)
E/flutter (18811): #13     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
E/flutter (18811): 

我正在通過 usb 連接的 android 設備上運行該應用程序(使用 flutter 運行)。 我正在使用最新版本的 flutter 和軟件包。

我怎樣才能解決這個問題?

感謝您!

嘗試在 MyApp Widget 的 initState 中進行這些調用。

像這樣:

initDocs() async {
  final appDocsDir = await getApplicationDocumentsDirectory();
  Hive.init(appDocsDir.path);
}

@override
void initState() {
  initDocs();
  super.initState();
}

或者:

@override
void initState() {
  getApplicationDocumentsDirectory().then((e)=>Hive.init(e.path));
  super.initState();
}

我使用Hive.initFlutter()解決了這個問題。 這是代碼:

import 'package:hive/hive.dart';
import 'package:hive_flutter/hive_flutter.dart';


void main() async {
  await Hive.initFlutter()
  runApp(MyApp());
}

只需復制並粘貼此代碼,之前:await getApplicationDocumentsDirectory();

  WidgetsFlutterBinding.ensureInitialized();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM