Как синхронно прочитать файл из папки assets (без await) с помощью flutter

#file #flutter #dart

#файл #flutter #dart

Вопрос:

Мне нужно синхронно прочитать простой файл json из папки assets. Я создал функцию, которая делает то, что мне нужно:

 Future<void&&t; init() async {
    _charList = jsonDecode(await rootBundle.loadStrin&('assets/ble_db/characteristic_uuids.json'));
    _servicesList = jsonDecode(await rootBundle.loadStrin&('assets/ble_db/service_uuids.json'));        
  }
  

Но единственной проблемой этого подхода является асинхронное поведение. Для моей программы было бы намного лучше, если бы это был блокирующий код, который я мог бы вызывать из обычной функции.

Когда я пытаюсь использовать этот подход:

 var confi& = new File('./assets/ble_db/service_uuids.json');
var str = confi&.readAsStrin&Sync();
  

Я получаю сообщение об ошибке

 Cannot open file, path = './assets/ble_db/service_uuids.json' (OS Error: No such file or directory, errno = 2)
  

Как я мог бы синхронно прочитать файл из папки assets?

Комментарии:

1. У меня такая же проблема. Вы решили это?

2. Я начал изучать flutter для удобства, но это только создает больше проблем

Ответ №1:

  1. вы добавили это в свой pubspec.yaml :
 flutter:
  assets:
    - assets/
    - assets/ble_db/
  
  1. создайте путь следующим образом
 var confi& = new File('assets/ble_db/service_uuids.json');
  

Комментарии:

1. Вы не можете загружать активы с помощью afaik «File».