Ответы пользователя по тегу Dart
  • Нужны ли мне изоляты?

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

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

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

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

    @KnightForce
    Пишешь класс.
    У него много внутренний логики, парсеры мб.
    В нем могут быть стримы и т.д.
    Обычное обращение к экземпляру - как к классу.
    Но если надо вызвать как функцию - здесь и пригождается.

    Очень надуманный пример:
    class Counter {
        int _count = 0;
        call() => _count++;
    }
    var counter = Counter();
    Button(onTap: counter)


    Можно обойтись методом.
    Это нужно для удобства решения задач, как и, почти, все в любом языке программирования.
    Ответ написан
    Комментировать
  • Был ли у кого-то опыт перехода с React Native на Flutter?

    @KnightForce
    Да.
    Flutter быстрее, гибче, стабильнее.
    Нет проблем с Java / Swift, когда проект не собирается.
    Платформа по сути одна - движок Skia.
    Рендерит ОДИНАКОВО на Android и iOS.

    Я доволен.
    Ответ написан
    Комментировать
  • Как сделать выбор не более одного элемента Radio в каждой подгруппе?

    @KnightForce
    Используй StatefulWidget.
    Ответ написан
    Комментировать