Задать вопрос
  • Нужны ли мне изоляты?

    @KnightForce
    Ну БД работает через либу юзающую каналы - там уже свой поток, думаю хватит асинхронщины.
    Если использовать Moor - то там, вроде, с изолятами все ок.

    Когда нужны изоляты:
    Есть тяжелая операция и она блочит UI. Ее можно разбить на мелкие асинхронные и поток разгрузится, но может и подтормаживать. Если же нужно распарсить большой JSON - зависаний не избежать.

    Вот тут то и можно отдать парсинг в изолят. Можно его не разбивать на асинхронные операции, пусть себе блочит поток - так как этот поток уже будет в новом изоляте (процессе).

    Кратко:
    Все вычисления что блочат поток можно отдавать в изоляты.
    Всякую мелочь не стоит, порой дешевле на Future сделать, но какие-нибудь весомые вещи - да.
    Ответ написан
    Комментировать
  • Как сделать список задом наперед?

    @KnightForce
    Кустарный, вариант.
    Мб знатоки CSS знают как сделать на нем.
    var parent = document.body.querySelector('.footer_block');
    var arr = Array.from(parent.querySelectorAll('footer_block')).reverse();
    for(let tag of arr) {
     parent.append(tag)
    }
    Ответ написан
    Комментировать
  • Перестал корректно работать, что делать?

    @KnightForce
    Покажи верстку.
    Скорее-всего изображение внутри Column или Row - добавь им mainAxisSzie: MainAxisSzie.min.

    Но это на вскидку , нужен код верстки.
    Ответ написан
  • Как проверить авторизацию пользователя в приложении на Flutter?

    @KnightForce
    Ну можно заюзать синглтон или статический метод у ответственного класса / фнукцию и вызывая ее - проверять.
    Ответ написан
    Комментировать
  • Как обстоят дела во flutter/react native с вызовом системных функций платформы?

    @KnightForce
    Нужно смотреть какие либы есть.
    Если чего-то нет - придется писать на нативе. У Flutter с этим проще.
    Пара строк в Dart, пара строк в нативе - и связь готова, дальше логику писать.
    Ответ написан
    Комментировать
  • Как скрыть поле ввода TextFormField во Flutter?

    @KnightForce
    А почему удалить не вариант?
    Можно ненужные поля обернуть в Offstage. Они тогда есть, но их не видно.
    Но это все-равно костыль, так как лучше удалить за ненадобностью.
    Скинь код с родителем. Если там рендер в цикле, то лучше исправить цикл - исключив рендер ненужных элементов.
    Ответ написан
    Комментировать
  • Как грамотно авторизоваться в расширении для GitLab?

    @KnightForce Автор вопроса
    Оказалось что авторизация не требуется.
    Можно просто слать запросы.
    У расширения есть доступ к сессии.
    Ответ написан
    Комментировать
  • Как победить ошибку "cannot read property of undefined"?

    @KnightForce
    Какая-то переменная / поле / аргумент имеет значение undefined - вместо ожидаемого.
    Вы берете у него еще что-то и получаете ошибку.
    Например:
    chats[context.chatId].users[context.senderId]

    Если chats[context.chatId] undefined, то у него нет никакого users.
    Ответ написан
    Комментировать
  • Зачем нужен constructor в react?

    @KnightForce
    Он нужен не в React, а в классе.
    В данном случае можно сделать и так и так.
    Ответ написан
    6 комментариев
  • Как обстоят дела с Dart?

    @KnightForce
    Dart сейчас развивается как dart2js и в связке с Flutter.
    Ответ написан
    Комментировать
  • Как изменить данные в родители?

    @KnightForce
    У вас в методе open создается переменная int testText = 2;.
    Чтобы сменить значения в родителе - просто напишите testText = 2;.
    Если хотите изменить значения при наличии локальной testText в методе:
    class Child extends Parent{
       open(){
        @Output()
         int testText = 2;
         this.testText  = 2;
         // Присвоит значение в переменную у класса, а не в созданную выше.
         // В данном случае у родителя из-за наследования.
       }
    }
    Ответ написан
    Комментировать
  • Как подсчитать количество символов для вывода на изображение?

    @KnightForce
    Можно пререндерить этот текст.
    Но предварительно разбей на небольшие куски, иначе могут быть косяки.
    А потому смотри, сколько влезло, подбирай размеры.

    final TextPainter textPainter = TextPainter(
            text: TextSpan(text: text, style: style), maxLines: 1, textDirection: TextDirection.ltr)
          ..layout(minWidth: 0, maxWidth: double.infinity);
        return textPainter.size;


    1) Возьми 1-ые 100 символов.
    2) Сравни размер части текста с размерами экрана. Если еще влезает - еще бери.
    3) Вычти из остального текста столько символов, сколько в итоге было в той части текста
    6) Отрендери.
    7) Повторяй так пока не выведешь весь текст.
    8) Либо все делай через Fluture. Либо создай изолят, скорми ему текст, а он тебе пусть по требованию или периодически отдает куски текста. При его инициализации передай ему размер экрана или того виджета в котором будешь выводить текст. Если размеры хардкорные - тут все просто, иначе xthtp double width = (context.findRenderObject() as RenderBox).size.width
    Ответ написан
    Комментировать
  • Как работают константы в dart?

    @KnightForce
    Я еле понял что ты хочешь.

    cosnt - это константа времени компиляции.
    То есть она сразу есть с apk.
    В ALLOW_WRITE у тебя экземпляр класса AdminPermission. У него есть поле name, но нет поля ALLOW_WRITE.
    Да и откуда ему взяться, это же значение для name.
    Ответ написан
    Комментировать
  • Во Flutter есть возможность открыть html файл локально из ресурсов?

    @KnightForce
    Так через WebView можно.
    Ответ написан
    Комментировать
  • Dart готов для веб-фронтенда?

    @KnightForce
    Ну dart2js давно есть и на нем успешно пишут в прод.
    Есть AngularDart.

    Скоро релиз стабильной версии FlutterWeb подъедет.
    Ответ написан
    Комментировать
  • Как сделать этот плавный переход прозрачности?

    @KnightForce
    Stack + Container с градиентом в decortation .
    Ответ написан
    Комментировать
  • Как обработать возврат на предыдущую страницу во Flutter?

    @KnightForce
    async () {
        await Navigator.push() // Предыдущий экран будет ждать результат роута
    }


    Можно из экрана что-то вернуть:

    async () {
      final int result =  await Navigator.push() // Предыдущий экран будет ждать результат роута
      
      // Где-то на другом экране:
     
      navigator.pop(1);
    
    }
    Ответ написан
    Комментировать
  • Как поместить виджет в центр экрана, игнорируя column?

    @KnightForce
    Виджет Center.
    Но смотрите чтобы то в чем он будет было на весь экрана.

    Если получится что Container сжался до размеров потомка, то варианта 2:

    1) Занять всю доступную ширину и высоту.
    width: double.infinity
    height: double.infinity

    2) Взять размеры экрана:

    Size size = Mediaquery.of(context).size;
    width: size.width
    height: size.height

    Но если добавится еще какой-нибудь родитель с padding то размеры не влезут, так как они занимают не все доступное пространство, а значение равное размеру экрана.
    Экран в ширину 300, padding 10 - п.1 возьмет 290, а п.2. размеры экрана - 300 и получится что виджет вылез на 10.

    Поэтому 1 вариант предпочтительнее.
    Ответ написан
    Комментировать
  • Как найти значение свойства объекта в массиве по ключу свойства?

    @KnightForce
    1)
    Где-то в коде:
    var obj = tdList[1];

    В другом месте:
    tdList[tdList.indexOf(obj)]

    2) По нормальному:
    tdList.find((item) => item.task == 'a');

    3) Вариант, который соответствует вашему коду:
    indexOf у массивов уже есть, так что назвал по-другому
    Array.prototype.indexOfObjectValue = function(value) {
        for(var i = 0; i < this.length; i++) {
            if(typeof this[i] != 'object') continue;
            for(var key in this[i]) {
                if(this[i][key] == value) return this[i];
            }
        }
    }
    
    tdList.indexOfObjectValue('a').task
    Ответ написан
    Комментировать
  • Нужно ли учить JS/Dart чтобы пользоваться фреймворками?

    @KnightForce
    Знанием фреймворка ты решишь общие вопросы и напишешь типовой код. Как бы ты ни знал фреймворк - он закрывает только определенную часть задач, даже если он закрывает их очень много.

    Язык знать надо.

    Только так ты сможешь полноценно что-то писать сам.

    И править / дописывать фреймворк.

    Или писать свое решение в случае необходимости.

    Без языка далеко не уедешь.

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

    Например, знать что в JS (как и в других языка) сложность for зависит от шагов и сделав не i++, i+=2 ты уменьшиш нагрузку (осторожнее с нечетным количеством элементов) или что динамическое добавление поля к объекту - под капотом пересоздаст скрытый класс в V8.
    Или что Promise и их then => Promise ожидаются рекурсивно и можно писать вложенные конструкции.
    Ответ написан
    Комментировать