Emr*_*kib 4 text load assets dart flutter
我想从资产中读取文本文件并将其显示到我的 flutter 应用程序中的容器小部件中。当我运行应用程序时,容器不显示任何文本,只显示一个空白的白页。我已经尝试过这种方式:
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class cs_one extends StatelessWidget {
@override
Widget build(BuildContext context) {
final appTitle = 'Read Text File';
return MaterialApp(
title: appTitle,
home: Scaffold(
appBar: AppBar(
title: Text(appTitle),
),
body: a()
),
);
}
}
class a extends StatelessWidget {
String _data;
Future<void> _loadData() async {
final _loadedData = await rootBundle.loadString('lib/asset/textfile/cs_one.txt');
_data = _loadedData;
}
@override
Widget build(BuildContext context) {
return Container(
child: Text(_data),
);
}
}
Run Code Online (Sandbox Code Playgroud)
pubsepec.YAML 文件:
# To add assets to your application, add an assets section, like this:
assets:
- image/background.jpg
- image/icon.png
- lib/asset/textfile/cs_one.txt
Run Code Online (Sandbox Code Playgroud)
我该怎么解决这个问题?
您需要在使用 StatefulWidget 或 FutureBuilder 显示数据之前加载数据。
这是使用 StatefulWidget 的示例:
class MyWidget extends StatefulWidget {
const MyWidget({Key? key}): super(key: key);
@override
State<StatefulWidget> createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
String? data;
void _loadData() async {
final _loadedData = await rootBundle.loadString('lib/asset/textfile/cs_one.txt');
setState(() {
data = _loadedData;
});
}
@override
void initState() {
super.initState();
_loadData();
}
@override
Widget build(BuildContext context) {
return Center(
child: Text(data ?? 'empty'),
);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3484 次 |
最近记录: |