首页 > 解决方案 > Flutter:如何将资产路径传递给新的 Screen 类

问题描述

我需要将作为文本文件的资产路径传递给新屏幕。我想通过使用 OnTap() 从 ListTile 传递该资产路径,并将该路径传递给新的屏幕类。

资产路径:

'lib/asset/textfile/cs_one.txt'

我的列表瓷砖:

ListTile(
      leading: CircleAvatar(
        backgroundImage: AssetImage("image/icon.png"),
      ),
      title: Text("Story One"),
      trailing: Icon(Icons.arrow_forward),

        onTap: () {
          Navigator.push(
            context,
            MaterialPageRoute(builder: (context) => cs_one() ),
          );
        }

我想将路径传递给另一个类,这是一个新屏幕,我将从那里加载资产数据。我知道如何加载我只需要帮助将它从 ListTile 传递到新屏幕类的资产数据。

标签: flutterpathassetspass-data

解决方案


以下是在 Flutter 中将数据传递给另一个小部件的方法:

class MyWidget extends StatelessWidget {

  const MyWidget({Key? key}) : super(key: key);
  final String assetPath = 'lib/asset/textfile/cs_one.txt';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Center(
        child: ListTile(
          leading: CircleAvatar(
            backgroundImage: AssetImage(assetPath),
          ),
          title: const Text("Story One"),
          trailing: const Icon(Icons.arrow_forward),
          onTap: () {
            Navigator.push(context, MaterialPageRoute(
              builder: (context) => NextScreen(assetPath: assetPath)
            ));
          }
        ),
      )
    );
  }
}

class NextScreen extends StatelessWidget {

  final String assetPath;
  const NextScreen({Key? key, required this.assetPath}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Text(assetPath),
      ),
    );
  }
}

推荐阅读