Size: a a a

Dart & Flutter по-русски

2021 March 09

EA

Eugene Alitz in Dart & Flutter по-русски
List<Uint8List> getSplitPacketBytes(Uint8List bytes) {
   var byteList = <Uint8List>[];
   if (bytes.length <= packetChunkSize) {
     byteList.add(bytes);
   } else {
     var diff = bytes.length % packetChunkSize;
     var splits = (bytes.length - diff) / packetChunkSize;
     for (var i = 0; i < splits; i++) {
       var start = i * packetChunkSize;
       var end = start + packetChunkSize;

       byteList.add(
           bytes.sublist(start, end <= bytes.length ? end : bytes.length));
     }
     if (diff > 0) {
       byteList.add(bytes.sublist(bytes.length - diff, bytes.length));
     }
   }

   return byteList;
 }
источник

EA

Eugene Alitz in Dart & Flutter по-русски
DVS Studio
подозреваю что дело не в выводе в консоль
ясное дело
источник

MK

Mykhailo Kaduk in Dart & Flutter по-русски
а что за прелесная асинхронная операция? она часом чанки не мутирует?
источник

EA

Eugene Alitz in Dart & Flutter по-русски
Mykhailo Kaduk
а что за прелесная асинхронная операция? она часом чанки не мутирует?
Нет, просто передает их сервису:
Future<void> writeCharacteristic(Uint8List data,
     {bool ensureSuccess = true}) async {
   var status = ensureSuccess ? 'success' : 'unknown';
   Log.debug(tag, 'Try writeCharacteristic $data');

   try {
     await _charForWrite
         .write(data, _charForWrite.isWritableWithResponse)
         .timeout(Duration(milliseconds: 1000),
             onTimeout: () =>
                 throw Exception('Characteristic writing timeout'));

     await Future.delayed(Duration(milliseconds: 2));
   } catch (e) {
     status = 'failure ${e.toString()}';
   }

   if (status != 'success') {
     Log.debug(tag, "Writing TX characteristic: $data, status: $status");
   }
 }
источник

EA

Eugene Alitz in Dart & Flutter по-русски
источник

MK

Mykhailo Kaduk in Dart & Flutter по-русски
если присмотреться, там не одно число меняется между консолями. в последнем чанке тоже какая- то херня происходит
источник

EA

Eugene Alitz in Dart & Flutter по-русски
Mykhailo Kaduk
если присмотреться, там не одно число меняется между консолями. в последнем чанке тоже какая- то херня происходит
Вот я и не понимаю, с чего это вдруг они меняются
источник

DS

DVS Studio in Dart & Flutter по-русски
для начала имеет смысл сделать везде final чтобы точно не менять переменные напрямую
дальше можно склонировать лист чанков чтобы на всякий случай отключить его от функции (ну а вдруг)
и поставить бряки на каждой строчке и ждать погда начнет массив меняться
источник

DS

DVS Studio in Dart & Flutter по-русски
Eugene Alitz
Но на выходе получаю:
CHUNKS:
[[50, 0, 0, 0, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11, 151, 11, 118, 46], [3, 1, 1, 242, 50, 28, 10, 16, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11], [151, 11, 118, 46, 16, 153, 190, 228, 180, 129, 47, 24, 255, 1]]
TRY TO WRITE CHUNK [50, 0, 0, 0, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11, 151, 11, 118, 46]

————————-
CHUNKS [[50, 0, 0, 0, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11, 151, 11, 118, 46], [1, 1, 1, 242, 50, 28, 10, 16, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11], [151, 11, 118, 46, 16, 226, 189, 228, 180, 129, 47, 24, 255, 1]]
TRY TO WRITE CHUNK [1, 1, 1, 242, 50, 28, 10, 16, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11]
———————-
CHUNKS [[50, 0, 0, 0, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11, 151, 11, 118, 46], [2, 1, 1, 242, 50, 28, 10, 16, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11], [151, 11, 118, 46, 16, 143, 190, 228, 180, 129, 47, 24, 255, 1]]
TRY TO WRITE CHUNK [2, 1, 1, 242, 50, 28, 10, 16, 67, 245, 136, 166, 231, 19, 65, 60, 185, 214, 143, 11]
тут кстати еще не понятно, почему он в 3й раз берет не 3й чанк, а 2й с увеличенным на 1 1 элементом
источник

EA

Eugene Alitz in Dart & Flutter по-русски
DVS Studio
для начала имеет смысл сделать везде final чтобы точно не менять переменные напрямую
дальше можно склонировать лист чанков чтобы на всякий случай отключить его от функции (ну а вдруг)
и поставить бряки на каждой строчке и ждать погда начнет массив меняться
Тоже думаю в этом направлении
источник

EA

Eugene Alitz in Dart & Flutter по-русски
И это происходит только если первый пейринг не прошел
источник

EA

Eugene Alitz in Dart & Flutter по-русски
Если с первого раза запейрилось, то все ок
источник

DS

DVS Studio in Dart & Flutter по-русски
DVS Studio
для начала имеет смысл сделать везде final чтобы точно не менять переменные напрямую
дальше можно склонировать лист чанков чтобы на всякий случай отключить его от функции (ну а вдруг)
и поставить бряки на каждой строчке и ждать погда начнет массив меняться
ну и наконец подрубить анализатор чтобы сразу бил по рукам за var)
источник

EA

Eugene Alitz in Dart & Flutter по-русски
DVS Studio
ну и наконец подрубить анализатор чтобы сразу бил по рукам за var)
это не всегда полезно
источник

DS

DVS Studio in Dart & Flutter по-русски
да ладно?
источник

EA

Eugene Alitz in Dart & Flutter по-русски
DVS Studio
да ладно?
мы не сторонники иммутабельных данных
источник

lf

les forest in Dart & Flutter по-русски
Eugene Alitz
мы не сторонники иммутабельных данных
источник

А

Артур in Dart & Flutter по-русски
источник

А

Артур in Dart & Flutter по-русски
источник

DS

DVS Studio in Dart & Flutter по-русски
фокса на тебя не хватает))
но это совсем другая история
источник