Как мне получить строковые ресурсы Android для пакета flutter?

#android #dart #flutter

#Android #dart #flutter

Вопрос:

Я хочу прочитать stings.xml файл в другом пакете.

Я создаю пакет flutter

Что мне делать?

пример приложения flutter string xml

   <string name="client_id">clientid</string>
  

пакет flutter

    context.getString(R.stirng.client_id); // not found
  

Ответ №1:

Вы можете прочитать его из контекста после установки в XML-файл:

Добавьте этот класс в свой плагин:

 import android.content.Context
import androidx.annotation.NonNull

class PluginUtilities 
{
    companion object {
        @JvmStatic
        fun getResourceFromContext(@NonNull context: Context, resName: String): String {
            val stringRes = context.resources.getIdentifier(resName, "string", context.packageName)
            if (stringRes == 0) {
                throw IllegalArgumentException(String.format("The 'R.string.%s' value it's not defined in your project's resources file.", resName))
            }
            return context.getString(stringRes)
        }

    }
}
  

Затем, когда вам понадобится какая-либо строка из ресурсов, вы можете вызвать метод getResourceFromContext, например, я получу access_token из ресурсов:

 val accessToken: String = PluginUtilities.getResourceFromContext(context,"access_token")
  

Я надеюсь, что ответ полезен…

Ответ №2:

Вы не сможете получить доступ xml к файлу в flutter пакете

Вы можете создать файл Strings.dart

 class Strings {
  static const String client_id = "xxxxxxxx";
}
  

И используйте это так

 Text(Strings.client_id, /*Code*/),
  

Не забудьте import Strings.dart

 import '../Strings.dart';