Как записать экземпляр `ByteData` в файл в Dart? - PullRequest
0 голосов
/ 01 мая 2018

Я использую Flutter для загрузки «ресурса» в File, чтобы нативное приложение могло получить к нему доступ.

Вот как я загружаю актив:

final dbBytes = await rootBundle.load('assets/file');

Возвращает экземпляр ByteData.

.

Как я могу записать это в dart.io.File экземпляр?

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

для поиска flutter ByteData to List<int> затем нашел здесь, но не полностью ответил на мой вопрос:

как конвертировать ByteData в List<int>?

после самостоятельного изучения, решение:

  1. использовать .cast<int>()
ByteData audioByteData = await rootBundle.load(audioAssetsFullPath);
Uint8List audioUint8List = audioByteData.buffer.asUint8List(audioByteData.offsetInBytes, audioByteData.lengthInBytes);
List<int> audioListInt = audioUint8List.cast<int>();

или 2. используйте .map

ByteData audioByteData = await rootBundle.load(audioAssetsFullPath);
Uint8List audioUint8List = audioByteData.buffer.asUint8List(audioByteData.offsetInBytes, audioByteData.lengthInBytes);
List<int> audioListInt = audioUint8List.map((eachUint8) => eachUint8.toInt()).toList();
0 голосов
/ 01 мая 2018

ByteData является абстракцией для:

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

Как упомянул Гюнтер в комментариях, вы можете использовать File.writeAsBytes. Однако для перехода от ByteData к List<int> требуется немного работы API.

import 'dart:async';
import 'dart:io';
import 'dart:typed_data';

Future<void> writeToFile(ByteData data, String path) {
  final buffer = data.buffer;
  return new File(path).writeAsBytes(
      buffer.asUint8List(data.offsetInBytes, data.lengthInBytes));
}

Я также подал проблему , чтобы сделать документы Flutter более понятными для этого варианта использования.

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