Флаттер & ndash; Как использовать shared_preferences и Settings.bundle для iOS (и как насчет Android?)

Вот функция, вдохновленная принятым ответом с правильным синтаксисом, который возвращает таблицу бит в wriiten справа налево.

num=255
bits=8
function toBits(num, bits)
    -- returns a table of bits
    local t={} -- will contain the bits
    for b=bits,1,-1 do
        rest=math.fmod(num,2)
        t[b]=rest
        num=(num-rest)/2
    end
    if num==0 then return t else return {'Not enough bits to represent this number'}end
end
bits=toBits(num, bits)
print(table.concat(bits))

>>11111111
3
задан sjmcdowall 27 February 2019 в 17:16
поделиться

1 ответ

Вот частичный ответ, подходящий только для iOS. До сих пор не знаю, как справиться с этим на Android (или, если вообще возможно).

Если вы хотите настроить предпочтения, которые можно просматривать и изменять в приложении «Настройки» для вашего приложения, вам нужно сделать один дополнительный шаг. Общие общие шаги:

- Создайте настройки флаттера, как обычно. - В папке iOS создайте новую папку верхнего уровня под названием «Settings.bundle». Уже есть один из них в папке Runner, но это не слишком полезно для нас.

- В папке Settings.bundle вам нужна другая подпапка с именем "en.lproj" (или любым другим языком, который вы хотите). В этой подпапке вам нужен файл с именем "Root.strings".

- На том же уровне, что и en.lproj, находится еще один файл с именем «Root.plist». Таким образом, структура выглядит в основном так:

main_app/
    iOS/
        ...
        Settings.bundle/
            en.lproj/
                Root.strings
            Root.plist

Root.plist

Здесь находится магия (в основном). Как оказалось, флаттер автоматически добавляет префикс «флаттер». все имена предпочтений, которые вы используете. Это секрет. Итак, вот пример Root.plist. Запомните имена клавиш flutter.XXXX!

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>StringsTable</key>
    <string>Root</string>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Title</key>
            <string>Data Location</string>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSMultiValueSpecifier</string>
            <key>Title</key>
            <string>Region</string>
            <key>Key</key>
            <string>flutter.dataSourceRegionV2</string>
            <key>DefaultValue</key>
            <string>0</string>
            <key>Titles</key>
            <array>
                <string>US/World</string>
                <string>EU</string>
                <string>Advanced</string>
            </array>
            <key>Values</key>
            <array>
                <integer>1</integer>
                <integer>2</integer>
                <integer>3</integer>
            </array>
        </dict>
        <dict>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
            <key>Title</key>
            <string>Server</string>
            <key>Key</key>
            <string>flutter.dataSourceServerURLV2</string>
            <key>DefaultValue</key>
            <string></string>
            <key>IsSecure</key>
            <false/>
            <key>KeyboardType</key>
            <string>URL</string>
            <key>AutocapitalizationType</key>
            <string>None</string>
            <key>AutocorrectionType</key>
            <string>No</string>
        </dict>
    </array>
</dict>
</plist>

Root.strings

Содержит переведенные строки для использования в файле настроек для приложения на основе языка. Это довольно просто. Опять же, из того же примера:

/* A single strings file, whose title is specified in your preferences schema. The strings files provide the localized content to display to the user for each of your preferences. */

"Data Location" = "Data Location";
"Region" = "Region";
"Server" = "Adv. URL";
"none given" = "none given";
"Authorization" = "Authorization";
"Username" = "Username";
"Password" = "Password";
"Advanced" = "Advanced";
"US/World" = "USA";
"EU" = "European Union";

В вашем приложении флаттера вы используете обычное использование shared_preferences - просто не забудьте удалить «флаттер». префикс из вашего приложения.

Вот ссылка на приличную статью, которая содержит больше информации о настройках iOS в целом: Настройки iOS

Надеюсь, это поможет вам преодолеть эту маленькую головоломку! Теперь, если бы мы могли выяснить, Android!

0
ответ дан sjmcdowall 27 February 2019 в 17:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: