android - 如何将 Text Asset 的值赋给 String 并在 Text() 中显示?
问题描述
我想使用函数修改文本资产(.txt 文件)中的数据并将其显示在Text()
小部件中。myFunction
将datatypeString
作为参数并返回 datatype String
。
我已经阅读了文档。从 Image 加载资产,这没有用。我也尝试过Suragch's Answer 的解决方案。
这可能是我应该使用的情况,FutureBuilder
但我无法理解如何让它在这里工作(我是新手)。我将使用另一个函数来修改文件中的数据,然后显示。
这是我尝试过的事情之一:
Widget build(BuildContext context) {
Future<String> aloadAsset(BuildContext context) async {
return await DefaultAssetBundle.of(context).loadString('assets/help.txt');
}
String helps = myFunction(await aloadAsset(context));
return Scaffold(
body: Text(helps)
);
}
将值分配await aloadAsset(context)
给 String 时,出现以下错误:Unexpected text 'await'.
&A value of type 'Future<String>' can't be assigned to a variable of type 'String'.
解决方案
await
关键字只能在async
函数中使用。您可以在这里做的是:将小部件设置为StatefulWidget
然后在状态类中:
String helps = "";
在initState()
方法中:
aloadAsset();
并将您的功能更改为:
aloadAsset() async {
helps = myFunction(await rootBundle.loadString('assets/help.txt'));
setState((){});
}
不要忘记添加导入
import 'package:flutter/services.dart' show rootBundle;
推荐阅读
- c++ - C ++井字游戏仅以一种组合获胜
- javascript - 将 javascript 文件添加到 Angular7 dist 文件夹
- database - AWS QLDB 的数据加密
- java - 在尝试使复合类方法对另一个包类可见时避免违反 SOLID 原则
- cassandra - 如何在没有分区键的情况下使用 ORDER_BY 搜索记录
- html - IE/Edge 不考虑绝对底部
- javascript - 有没有办法将事件监听器添加到类中?
- ios - UIAlertController 没有立即显示
- spring - 页面加载时的 Spring MVC 表单验证
- h2o - 可以为 h2o.save_model() 设置文件名(而不是简单地使用 model_id 值)?