将 Flutter 中的资源加载到原生代码中

问题描述 投票:0回答:1

我正在尝试将资产从 flutter 项目“asset”文件夹加载到本机代码中。例如,我希望这个文件

/assets/labels.txt
(Flutter 文件夹)将其加载到路径
android/app/main/kotlin/MainActivity.kt
的 Kotlin 脚本中。

我成功将 Flutter 连接到 Kotlin,但在尝试加载它时出现错误。

class MainActivity : FlutterActivity() {
    private val CHANNEL = "your_channel_name"
    private val LABELS_PATH = "assets/labels.txt"  // 

    private fun loadLabels() {
        try {
            Log.d("LoadLabels", "Loading labels...")

            val reader = BufferedReader(InputStreamReader(assets.open(LABELS_PATH)))
            labels = reader.readLines()
            reader.close()
            labels.forEach { line ->
                Log.d("TextFileContent", line)
            }
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }

// ...
}

这些是我的错误:

D/LoadLabels(11123):正在加载标签...
W/System.err(11123):java.io.FileNotFoundException:assets/labels.txt

所以我的问题是这样的:

我必须始终从 Flutter 项目文件夹或本机代码脚本所在的同一文件夹加载资源?另外我这里的错误是什么?

谢谢。

android flutter kotlin
1个回答
0
投票

在as中分析你的flutter apk,你会发现它有这样的目录结构

在此输入图片描述

现在假设我需要加载pic_app_logo.png,那么代码应该是这样的

context.assets.open("flutter_assets/packages/pkg_res/assets/images/common/login/pic_app_logo.png")
© www.soinside.com 2019 - 2024. All rights reserved.