我有一个文本文件(.txt),我想成为以后可以扫描的资源。
在pubspec.yaml,我已经确保:
flutter:
assets:
- res/my_file.txt
存在。该文件位于我创建的res/
文件夹中,与lib/android/
和ios/
处于同一级别
我试图从自定义类读取文件,而不是小部件。
根据文档,我将使用此导入:
import 'package:flutter/services.dart' show rootBundle;
然后开始这样读:
/// Assumes the given path is a text-file-asset.
Future<String> getFileData(String path) async {
return await rootBundle.loadString(path);
}
要获得实际数据,请执行以下操作:
String data = await getFileData(fileName);
但是,当我使用文件名
时,比如
的资产/res/my_文件。txt'
,我得到一个错误:无法加载资产:资产/res/my_文件。txt
。
同样值得注意的是,我试图从单元测试中做到这一点。关于如何正确地做到这一点有什么想法吗?谢谢!
在我看来,为了把JS文件加载到一个颤动中,你应该把它看作一个文本文件并适当地加载它。因此,您需要将该文件添加到assets文件夹,添加到pubspec文件中,然后加载它。在这里阅读完整答案
其次,您使用了evalJavascript。此功能可用于许多不同的情况。但只有当您有一个视图面板时,它才能工作。
检查下面的例子:
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
main() async {
String jsCode = await rootBundle.loadString('assets/javascript.js');
runApp(new MaterialApp(
home: LunchWebView(jsCode),
));
}
class LunchWebView extends StatelessWidget {
final String text;
LunchWebView(this.text);
@override
Widget build(BuildContext context) {
final FlutterWebviewPlugin flutterWebviewPlugin = FlutterWebviewPlugin();
flutterWebviewPlugin.launch('https://www.google.com');
flutterWebviewPlugin.evalJavascript(text);
return Container();
}
}
文件夹名“资产”并没有神奇地添加。更新您的pubspec。yaml
以包括资产的完整路径。
flutter:
assets:
- assets/res/my_file.txt
这里有一个更完整的答案,供未来的游客参考。
在项目的根文件夹中创建资产文件夹。在Android Studio中,您可以右键单击项目大纲并转到“新建”
如果愿意,可以在assets
中为文本文件创建另一个子文件夹。但是如果您这样做,您必须在pubspec中包含相对路径。亚马尔。见下文。
您只需将文本文件复制到assets
目录中即可。my\u文件的相对路径。例如,txt将是
资产/my_文件。txt
。
打开项目根目录中的pubspec.yaml文件。
向颤振部分添加资产小节,如下所示:
flutter:
assets:
- assets/my_file.txt
如果您想包含多个文件,那么您可以删除文件名,只需使用目录名(包括最终/):
flutter:
assets:
- assets/
您可以使用全局
rootBundle
获取文本文件资产:
import 'dart:async' show Future;
import 'package:flutter/services.dart' show rootBundle;
Future<String> loadAsset() async {
return await rootBundle.loadString('assets/my_text.txt');
}
或者,如果您有BuildContext(在小部件中),您可以使用DefaultAssetBundle。建议这样做,因为它允许在运行时切换资产包,这对多语言资产很有用。
Future<String> loadAsset(BuildContext context) async {
return await DefaultAssetBundle.of(context).loadString('assets/my_text.txt');
}
正在加载文本资源
- 如何在应用程序中包含图像
我读过https://flutter.dev/docs/development/ui/assets-and-images#asset-包依赖项中的图像和从资产中读取的文本文件,并应用了所有这些,但我的代码仍然无法工作。。。。 我为此打开了一个新项目,在主文件夹中创建了资产和文件: 然后,不信任Android Studio,我检查了vi,在pubspec.yaml一切都好: 该文件以以下内容结尾:
问题内容: 我正在尝试在Android Studio的res \ raw文件中保留一个.txt文件,并读取/解析该文件。我在“ res”目录(未创建)中创建的名为“ raw”的文件夹中有一个文件“ my_file.txt”。 我认为我的主要问题是:创建File对象(与Scanner对象一起使用)时,应该为文本文件传递什么路径? 这是我的代码: 问题答案: 认为您正在寻找符合以下条件的东西 其中ct
问题内容: 我有一个XML文件,需要在Android SDK中进行解析。 如何从资源中读取XML文件路径? XML包含: 问题答案: 将其放在文件夹下。然后,您可以使用以下命令打开它: 这里有一个有关如何使用的示例: http://android-er.blogspot.com/2010/04/read-xml-resources-in-android- using.html
我想从我的jar中读取一个资源,如下所示: 在Eclipse中运行它时工作良好,但如果我将它导出到一个jar中,然后运行它,就会出现一个IllegalArgumentException: 我真的不知道为什么,但通过一些测试我发现如果我改变 至 然后它的工作方式相反(它在jar中工作,但不能在eclipse中工作)。 我使用的是Eclipse,我的文件所在的文件夹位于类文件夹中。
我有一个名为的项目,它有以下结构: 所以这两个文件的路径是: 我想读测试文件。TestDataProvider中的json。JAVA 我曾经用过 我看到从URL res=getClass(). getClassLoader(). getResources("testfile.json")返回; 有人能帮我吗?
我很难弄清楚这个问题,我几乎什么都试过了。 我希望我的程序从Jar文件中读取两个资源,并且它将在eclipse中运行良好。但是当我从命令提示符运行jar时,它会给出空指针异常。 结构: src/main/java/App。JAVA src/main/resources/properties/application。属性 src/main/resources/spring/applicationCo