Как бы я следил за порядком сохраненного списка flutter_secure_storage? - PullRequest
0 голосов
/ 25 апреля 2020

Похоже, что пакет flutter_secure_storage хранит элементы в списке случайным образом. Существует ли простой способ сохранить элементы в списке / хранилище в том порядке, в котором они были записаны в список / хранилище? То, что я пытаюсь создать, имеет обычный просмотр списка обычного списка, и при нажатии на листинг, он должен ссылаться на тот же индекс в безопасном списке, но это не в порядке. Вот небольшой пример кода:

List<String> items = [];



List<SecIUtems> secItems= []; //the secure list

final _storage = FlutterSecureStorage();

changeUserInput(){
  //get user input via dialog box
  newInput = //something the user input;

  //code to mix up and add random stuff to newInput to make it a password or something
}

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

    _readAll();
  }

  Future<Null> _readAll() async {
    final all = await _storage.readAll();
    setState(() {
      return _items = all.keys
          .map((key) => _SecItem(key, all[key]))
          .toList(growable: false);
    });
  }


void addToList(){
  changeUserInput();
  final String key = somerandomValue();
  final String value = somerandomValue();
  items.add(newInput);

  await _storage.write(key: key, value: value);
    _readAll();
}


@override
Widget build(BuildContext context) => Scaffold(
        appBar: AppBar(
          title: Text('help'),
          actions: <Widget>[
            IconButton(
                onPressed: addToList,
                icon: Icon(Icons.add)),

listview.builder{
  itemCount: items.length,
  itemBuilder: (BuildContext context, in index) => ListTile(
  title: Text(items[index]),
        onPressed: (){
               print(secItems[index].value); //actual code copies the emcrypted password to clipboard. Hence the tile clicked on needs to correspond to the correct secured password
  }
  )
}





1 Ответ

0 голосов
/ 25 апреля 2020

Цепочка для ключей предназначена для небольших порций данных:

API служб цепочки для ключей помогает вам решить эту проблему, предоставив вашему приложению механизм для хранения небольших кусочков пользовательских данных в зашифрованной базе данных, называемой цепочкой для ключей. , Когда вы надежно запомните пароль для них, вы дадите пользователю возможность выбрать сложный. https://developer.apple.com/documentation/security/keychain_services# // apple_ref / doc / uid / TP30000897-CH203-TP1

Таким образом, используя решение с зашифрованным хранилищем, ie: sqflite и затем шифрует эти данные как лучшее решение.

Ссылка для шифрования sqfite сделать это: : //stackoverflow.com/questions/50232418/how-to-encrypt-the-sqlite-database-in -flutter

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...