【问题标题】:flutter : Passing assetpath as a string and load asset value颤振:将资产路径作为字符串传递并加载资产值
【发布时间】:2021-11-17 23:52:44
【问题描述】:

我想通过从另一个类作为字符串接收的资产路径加载资产(文本文件)来在容器中显示文本。但运行容器后显示为空。这种方法我试过了。

资产路径字符串:

  final String assetPath = 'lib/asset/textfile/cs_one.txt';

第一类(将assetpath作为字符串发送):

Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => cs_one( assetPath : assetPath) ),
          );

第二类(从第一类接收资产路径并加载数据):

 class cs_one extends StatefulWidget {
 final String assetPath;
 const cs_one({Key? key, required this.assetPath}) : super(key: key);

 @override
 _cs_oneState createState() => _cs_oneState( );
 }

 class _cs_oneState extends State<cs_one> {

 String? data;
  static String? get assetPath => assetPath;

void _loadData() async {
final _loadedData =
await rootBundle.loadString(assetPath!);
setState(() {
  data = _loadedData;
});
}

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

在小部件中显示文本:

body:  SingleChildScrollView(
      scrollDirection: Axis.vertical,
      child: Container(
        margin: EdgeInsets.all(15),
        width: 360,
        child: Text(data ?? 'empty'),
      ))),

【问题讨论】:

    标签: string flutter dart assets


    【解决方案1】:

    问题解决了。 我是这样解决的:

    class cs_one extends StatefulWidget {
    final String assetPath;
    const cs_one({Key? key, required this.assetPath}) : super(key: key);
    
    @override
    _cs_oneState createState() => _cs_oneState(assetPath );
    }
    
    class _cs_oneState extends State<cs_one> {
    
    String? data;
    String path='';
    _cs_oneState(String assetPath){
     this.path=assetPath;
    }
    
    void _loadData() async {
    final _loadedData =
    await rootBundle.loadString(path);
    setState(() {
      data = _loadedData;
     });
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-08
      • 2011-11-10
      • 2023-03-29
      • 2020-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多