bbo*_*ett 4 android assets flutter
我已阅读https://flutter.dev/docs/development/ui/assets-and-images#asset-images-in-package-dependencies和Flutter - Read text file from assets并应用了所有内容,但我的代码仍然没有\ 不工作....
\n我为此打开了一个新项目,在主文件夹中创建了资产和文件:
\npwd\n /home/bboett/AndroidStudioProjects/examen_companion\nbboett@hayate:~/AndroidStudioProjects/examen_companion$ ls -l assets/\n insgesamt 4\n -rw-r--r-- 1 bboett bboett 10 19. Mai 15:14 test.txt\n bboett@hayate:~/AndroidStudioProjects/examen_companion$ cat assets/test.txt \n Hello!!\n
Run Code Online (Sandbox Code Playgroud)\n然后,不信任 android studio,我用 vi 检查了,在 pubspec.yaml 中一切正常:
\n文件结尾为:
\nflutter:\n uses-material-design: true\n assets:\n - assets/\n
Run Code Online (Sandbox Code Playgroud)\n我替换了空格,在使用和资产之前添加了 2 个空格:在 - 资产之前添加了 4 个空格...
\n在 _MyHomePageState 类中我更改了:
\n @override\n Widget build(BuildContext context)\n {\n AssetBundle bundle = DefaultAssetBundle.of(context);\n return FutureBuilder<String>(\n future: bundle.loadString("assets/test.txt"),\n builder: (context, AsyncSnapshot<String> snapshot)\n {\n if (snapshot.hasData) { return Text(snapshot.data.toString()); }\n else { return CircularProgressIndicator(); }\n }\n );\n }\n
Run Code Online (Sandbox Code Playgroud)\n不起作用......我从来没有走出进度指示器......\n所以直接在我添加的主要内容中:
\nvoid main() async {\n print(await rootBundle.loadString("assets/test.txt"));\n runApp(MyApp());\n}\n
Run Code Online (Sandbox Code Playgroud)\n并崩溃:
\n Launching lib/main.dart on Linux in debug mode...\n Building Linux application...\n Debug service listening on ws://127.0.0.1:41355/L-ev6_eNIlI=/ws\n Syncing files to device Linux...\n [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: Null check operator used on a null value\n #0 PlatformAssetBundle.load (package:flutter/src/services/asset_bundle.dart:222:39)\n #1 AssetBundle.loadString (package:flutter/src/services/asset_bundle.dart:68:33)\n #2 CachingAssetBundle.loadString.<anonymous closure> (package:flutter/src/services/asset_bundle.dart:165:56)\n #3 _LinkedHashMapMixin.putIfAbsent (dart:collection-patch/compact_hash.dart:311:23)\n #4 CachingAssetBundle.loadString (package:flutter/src/services/asset_bundle.dart:165:27)\n #5 main (package:examen_companion/main.dart:9:26)\n
Run Code Online (Sandbox Code Playgroud)\n我在运行之前做了一些更改,然后进行了一次干净的颤动......
\n版本是:
\n flutter upgrade\n Flutter is already up to date on channel beta\n Flutter 2.2.0-10.3.pre \xe2\x80\xa2 channel beta \xe2\x80\xa2 https://github.com/flutter/flutter.git\n Framework \xe2\x80\xa2 revision 06e2fd6357 (vor 11 Tagen) \xe2\x80\xa2 2021-05-08 11:28:22 -0700\n Engine \xe2\x80\xa2 revision a123e75c60\n Tools \xe2\x80\xa2 Dart 2.13.0 (build 2.13.0-211.14.beta)\n
Run Code Online (Sandbox Code Playgroud)\nflutter doctor 也运行正常,哦,我在 linux 或 android 上有同样的错误,所以它不是设备......
\n所以我对如何完成这项工作一无所知,因为我的印象是遵循了文档和以前的帮助:(
\n顺便说一句,我认为颤振现在是空的,安全的......无论如何,我如何让它发挥作用?
\n提前致谢
\n[编辑]:更奇怪......我替换了
\n //future: bundle.loadString("assets/test.txt"),\n future: bundle.loadString(\'AssetManifest.json\'),\n
Run Code Online (Sandbox Code Playgroud)\n并得到:
\n flutter: {"assets/test.txt":["assets/test.txt"],"packages/cupertino_icons/assets/CupertinoIcons.ttf":["packages/cupertino_icons/assets/CupertinoIcons.ttf"]}\n
Run Code Online (Sandbox Code Playgroud)\n所以文件在那里???为什么无法打开/获取它?
\n[ed2]:好的,我不明白......我直接在 main 中尝试了这个:
\n print(await rootBundle.loadString(\'AssetManifest.json\'));\n
Run Code Online (Sandbox Code Playgroud)\n并且由于空异常而崩溃了......
\nWidgetsFlutterBinding.ensureInitialized()
是解决我的问题的关键以及 @HannesHulterg\xc3\xa5rd 所写的。为了补充他的答案,主要应该是:
void main() async {\n WidgetsFlutterBinding.ensureInitialized();\n print(await rootBundle.loadString("assets/test.txt"));\n runApp(MyApp());\n}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
2005 次 |
最近记录: |