Статья :: Dart & Flutter по-русски |
Программирование : Dart & Flutter по-русски
Nightwelf
Что-то мне говорит что на каждом
Vyacheslav
да, попробовал целиком обернуть, не получилось
Eugene
Ну по логике выход по кнопке назад должен быть из главного экрана приложения
Eugene
вот на нём и надо вешать
Nightwelf
То есть никто туториалов не делает?
Арчи
Hi, подскажите пожалуйста, как сделать чтобы при выборе одного ExpansionTile другой сворачивался?
Hellomik
хай кто знает как сделать такой grid
Hellomik
воссоздать самим такое никак ?
Дмитрий Митрофанов
[
{
"type": "mention",
"text": "@mobile_jobs"
}
]
Кирилл Матросов
[
{
"type": "mention",
"text": "@anokhin"
}
]
Serge Shkurko
[
"кто-нибудь знает способ подружить ",
{
"type": "code",
"text": "flutter_local_notifications"
},
" & ",
{
"type": "code",
"text": "firebase_messaging"
},
" ?"
]
Дмитрий Митрофанов
самому переписать плагин смержив два
Дмитрий Митрофанов
я так делал с конфликтами))
Volodymyr Medvediev
[
"Всем привет!\nКто-то пользовался этой либой на проекте написанном на обджектив си - ",
{
"type": "link",
"text": "https://pub.dev/packages/admob_flutter"
},
" ???\nПроблема в том, что либа написана на свифте, а проект у меня на обджективе и я не знаю совместима ли эта либа с обджективом????"
]
Eugene
О, это интересно, а случаем actions в уведомления добавить не получилось?
Дмитрий Митрофанов
я не с этими либами делал а с другими) Попроще)
Дмитрий Митрофанов
спойлер: придется покопаться в нативном коде как иос так и андроид)
Влод
блин intl парсит DateFormat("yy").parse("23") как 23й год и вот хз так оно и должно работать
Влод
в принципе это не его задача угадывать текущее столетие
Влод
ноо в андроиде вроде угадывал
Max
Как 23, 1923 или 2023?)
Max
Если формат - yy, а не yyyy, то - его задача.
Дмитрий Митрофанов
вроде помню в 2000 договоренность среди программистов была до 50 года резолвить как 20хх а после 19хх =) Хотя я тогда еще в школе учился и могу ошибаться))
Max
Хардкод 1950 кажется странным, особенно при наличии Unix Time
???????
И при чем тут юникс тайм?
Max
При том, что 1970 уже принят всеми в качестве hardcode-константы, нет смысла плодить сущности.
Влод
> For parsing with the abbreviated year pattern ("y" or "yy"), SimpleDateFormat must interpret the abbreviated year relative to some century. It does this by adjusting dates to be within 80 years before and 20 years after the time the SimpleDateFormat instance is created
???????
Я, может, чегот пропустил, но меня о таких законах не извещали
Влод
видимо это тема джавы
Max
Единственный правильный выход, ИМХО.
Max
POSIX-совместимыми операционными системами, например.
???????
)))))))))))))))))))))
Влод
Вообще нужно прочитать что в банковских картах принято на этот счёт
Max
На банковских картах даты - только вперёд, и не больше, чем на 20 лет.
???????
Майкрософт об этом знает?
???????
Энивэй, нифига нет таких стандартов
???????
[
"Каждый вертит как ему хочется и самое логичное, это такой подход:\n",
{
"type": "link",
"text": "https://t.me/rudart/102734"
},
""
]
Max
Знает, и довольно хорошо. Можно нагуглить WSL
???????
Каждый вертит как ему хочется. Не было какихто конвенций, заставляющих разработчиков так или иначе обрабатывать двухзначный год
???????
И юникстаймы и еще какой бред - вообще не в ту корзину.
Max
Там выше приводится довольно удобная динамическая конвенция, принятая в Java. То, что я написал - перечитайте пожалуйста - это то, что нет смысла создавать статическую конвенцию такого рода, использующую дату, отличную от 1970, поскольку 1970 уже принят как конвенция в других областях. Использовать ли какие-либо конвенции в рамках конкретного приложения - дело разработчика.
???????
При чем тут жаба?
???????
Вот при чем тут она и каким она тут боком?
???????
При чем тут то, что гдето нонеймы навасянили?
???????
Аппелировать к своим маняфантазиям и то, что в какомто майнкрафте сделано такто - это, конечно, сильный ход.
Max
Пожалуй, я не готов к такому уровню дискуссии. Приходите на митап, там обсудим.
???????
Более того, если вдруг, вы в погромировании недавно, то я вам расскажу большой-большой секрет: если что то работает с первого взгляда не очевидно, вы это переписываете на очевидный вариант + комментируете.
Alexey
Народ всем привет. А как можно вот такие кнопки запилить?
Egor
Если ты про форму со стрелкой то можно через ClipPath запилить например
Alexey
Ага про стрелку. Я тоже думал в сторону clip path или вообще через custom painter сделать
Egor
Вообще я бы сделал Material -> InkWell -> Column -> [Container, CustomPainter]
Александр Васильев
У меня есть абзац текста из 20 предложений. И мне нужно поменять последовательно цвет шрифта сначала у первого, потом у второго предложения и так далее до 20го. +Нужно иметь возможно изменять цвет шрифта предложения в зависимости от действий пользователя - нажал кнопку А - цвет предложения А, нажал кнопку Б - цвет предложения Б
Александр Васильев
Мне нужно каждое предложение обернуть в отдельный Text() и потом идти и менять их style: TextStyle ?
Fearless Cry
RichText в помощь
Александр Васильев
А как мне динамический сделать this не ссылкой, но сделать ссылокй уже hyper - когда я нажму NextButtom и так далее?
Александр Васильев
я же не могу код поменять по событию интерфейса
Александр Васильев
или выводить при каждом нажатии - новый RichText widget?
Александр Васильев
Спасибо, но я имел ввиду как по событиям(нажатие на кнопку) из интерфейса это делать.
Alexander Popov
Как минимум - setState вкупе с switch и счетчиком, но совсем непонятно, зачем это нужно
Александр Васильев
нее это не то предложение может быть неизвестно сколько и разные тексты
Fearless Cry
храните индекс строки которая должна быть выделена просто
Александр Васильев
но я немогу сидеть для каждой группы предложений код писать
Alexander Popov
так подсчитай количество слов и инкременть счетчик до этого значения
Greg
Всем привет. Кто-то сталкивался с тем, что скролвью сам скролит форму с многими текстфилдами к самому нижнему полю?
Fearless Cry
что значит для каждой группы, вам не нужно знать что там
Александр Васильев
да я так и хочу. но чем мне вывести множество Text() чтобы визуально это было похоже на обычный текст
Fearless Cry
я вам сказал что есть RichText
Fearless Cry
Но если хотите через текст:
Александр Васильев
То есть я сделаю RichText и внем children с TextSpan - это мои предложения. Как только нужно подсветить какое то предложение я его по индекс вытаскиваю и меню у него style ?
Fearless Cry
Вы вообще знаете как с StatefulWidget работать?
Александр Васильев
да полагаю что знаю, при каждом вызове SetState запускается build
???????
Можешь заморочиться и сделать их анимационными через lottie или flare
???????
Рисуешь (воруешь) в иллюстраторе SVG, его анимируешь в соответсвующем софте.
Fearless Cry
тогда запускайте мыслительные процессы
Sergey Ivanov
Всем привет. Подскажите как лучше передавать переменные в сервисы с бизнес логикой? Нужно ли для этого использовать state? допустим redux?
Sergey Ivanov
если можно, то как получить стейт в сервисе?
Sergey Ivanov
может кто подсказать? вроде простую вещь пытаюсь сделать, передать переменную в класс, который использовался на предыдущем экране, но никак не доходит как это сделать
Max
Мне кажется, стейт нужно хранить в сервисе, а в виджеты получать из сервиса запросами. Но тут могут быть разные подходы)
Hellomik
Кто знает как исправить указатель?
Hellomik
Который на верху
Hellomik
(Обычный textfield)
Ivan Danyliuk
что такое "указатель" и что с ним не так?
Ivan Danyliuk
а почему он круглый? никогда такого не видел.
Ivan Danyliuk
а, сорри, это на андроиде так текст выделяют, понял. проблема в том, что он не снизу текста, а на нем?
Nikita Dauhashei
Похоже на то, что текст в несколько строк
Dmitry T.
Всем привет ?? Такой вопрос - Хочу при старте приложения сделать запрос данных через апи, использую BLoC, где лучше стартовать запрос?
Ivan Danyliuk
[
{
"type": "mention",
"text": "@Hellomik"
},
" а если ",
{
"type": "code",
"text": "maxLines: 1"
},
" выставить - тоже самое будет?"
]
Ivan Danyliuk
[
{
"type": "mention",
"text": "@torindev"
},
" в main()-е, полагаю."
]
Dmitry T.
Нужно показывать прогресс бар
Dmitry T.
я заметил что на эмуле все дерево при первом старте перерисовывается два раза. Этот же "баг" есть на стоковом приложении Counter от гугла. На телефоне все создается только один раз
Dmitry T.
поэтому думаю что метод build и провайдеры не надежны, но другого способа не знаю
Hellomik
самый главный widget сделай как full и внутри iniState
Ivan Danyliuk
в инитстейт красиво к провайдеру доступ не получишь, но тут и не надо. в виджете в build-методе получаеешь из провайдера статус загрузки и рендеришь прогерсс бар.
Dmitry T.
[
{
"type": "mention",
"text": "@Hellomik"
},
" вызывается два раза, initState и dispose, я хз почему"
]
Hellomik
в начале на c++ потом на python перерисовка
Dmitry T.
просто попробуйте на эмуле, на любом приложении, при первом старте
Hellomik
что бы можно было hot reload делать
Hellomik
это уже не баг, а это ускорение
Dmitry T.
[
{
"type": "mention",
"text": "@Hellomik"
},
" на телефоне такого нет"
]
Hellomik
ну тип потому что быстро происходит
Dmitry T.
короче забить на это и делать в build?
Dmitry T.
не, нужен контекст
Dmitry T.
[
"для ",
{
"type": "code",
"text": "BlocProvider.of"
},
""
]
Dmitry T.
ок, спасибо. Но это правда странно???>?
Александр Васильев
да действительно просто
Fearless Cry
рад что вы справились
Александр Васильев
[
{
"type": "mention",
"text": "@FRapra1"
},
" спасибо"
]
Александр Васильев
Может еще подскажите виджет которы детей не в колонку или не в строку, а просто слево на право выводоит..
Vyacheslav
[
"как добиться, чтобы растянуть картинку на все свободное место? пишу так: ",
{
"type": "pre",
"text": "Container(\n height: 240.0,\n child: GestureDetector(\n onTap: () {\n Navigator.push(\n context,\n MaterialPageRoute(\n builder: (context) => DashboardPage(widget.car)));\n },\n child: ClipRRect(\n borderRadius: BorderRadius.only(\n topLeft: Radius.circular(4.0),\n topRight: Radius.circular(4.0)),\n child: FittedBox(\n fit: BoxFit.cover, child: Image.file(image)),\n ),\n ),\n )",
"language": ""
},
""
]
Александр Васильев
Спасибо!
Vyacheslav
все варианты BoxFit перебрал, все равно по краям остается место
Ivan Danyliuk
может там паддинг какой?
Vyacheslav
нет, чисто контейнер
Nikita Dauhashei
Убери FittedBox и Image.file добавь fit: BoxFit.cover,
Vyacheslav
но тогда пропадут радиусы
Yerassyl
где есть хорошие туториалы по bloc, чет не до конца понимаю =)
Artem Zaitsev
Didier Boelens по-моему самый крутой по части туториалов. У него сайт прям по имени фамилии. Сейчас не кину к сожалению.
Evgeny Cherkasov
у меня такая же проблема с Card
Vyacheslav
пока сделал костыль: поставил контейнеру ширину побольше
Vyacheslav
сейчас пробую на разных экранах
Ivan Danyliuk
а покажи дерево выше. если есть возможность то с Widget Inspector-а
Ivan Danyliuk
*выше контейнера всмысле. там Card похоже выше стоит?
Nikita Dauhashei
[
{
"type": "code",
"text": "Container"
},
"(\n",
{
"type": "code",
"text": " color: "
},
{
"type": "code",
"text": "Colors."
},
{
"type": "italic",
"text": "white"
},
",\n ",
{
"type": "code",
"text": "child: "
},
{
"type": "code",
"text": "Center"
},
"(\n",
{
"type": "code",
"text": " child: "
},
{
"type": "code",
"text": "Padding"
},
"(\n",
{
"type": "code",
"text": " padding: "
},
{
"type": "code",
"text": "const"
},
" ",
{
"type": "code",
"text": "EdgeInsets"
},
".",
{
"type": "code",
"text": "all"
},
"(",
{
"type": "code",
"text": "8.0"
},
"),\n ",
{
"type": "code",
"text": "child: "
},
{
"type": "code",
"text": "Container"
},
"(\n",
{
"type": "code",
"text": " height: "
},
{
"type": "code",
"text": "550.0"
},
",\n ",
{
"type": "code",
"text": "color: "
},
{
"type": "code",
"text": "Colors."
},
{
"type": "italic",
"text": "red"
},
",\n ",
{
"type": "code",
"text": "child: "
},
{
"type": "code",
"text": "ClipRRect"
},
"(\n ",
{
"type": "code",
"text": "borderRadius"
},
{
"type": "code",
"text": ": "
},
{
"type": "code",
"text": "BorderRadius"
},
".",
{
"type": "code",
"text": "only"
},
"(\n ",
{
"type": "code",
"text": "topLeft"
},
{
"type": "code",
"text": ": "
},
{
"type": "code",
"text": "Radius"
},
".",
{
"type": "code",
"text": "circular"
},
"(",
{
"type": "code",
"text": "16.0"
},
"),\n ",
{
"type": "code",
"text": "topRight"
},
{
"type": "code",
"text": ": "
},
{
"type": "code",
"text": "Radius"
},
".",
{
"type": "code",
"text": "circular"
},
"(",
{
"type": "code",
"text": "16.0"
},
"),\n ),\n ",
{
"type": "code",
"text": "child: "
},
{
"type": "code",
"text": "Image"
},
".",
{
"type": "code",
"text": "network"
},
"(\n ",
{
"type": "code",
"text": "'https://images.pexels.com/photos/67636/rose-blue-flower-rose-blooms-67636.jpeg?auto=compress&cs="
},
{
"type": "code",
"text": "tinysrgb&dpr"
},
{
"type": "code",
"text": "=1&w=500'"
},
",\n ",
{
"type": "code",
"text": "fit: "
},
{
"type": "code",
"text": "BoxFit."
},
{
"type": "code",
"text": "cover"
},
",\n ),\n ),\n ),\n ),\n ),\n)"
]
Ivan Danyliuk
ну вот там Card и еще два контейнера и 8мм паддинг
Ivan Danyliuk
если убрать тот Padding – изменится что-то?
Vyacheslav
погоди я не тот участок кода прислал))
Ivan Danyliuk
ну это я понял и по прошлому скрину. Там Card и три Container-а вложенных.
Ivan Danyliuk
я прям чувствую запах padding-а где-то :)
Vyacheslav
я думаю что просто разрешение картинки было меньше ширины устройства, и ширина контейнера не была указана явно. Поэтому cover не знал, на какую ширину тянуть имидж
Vyacheslav
чтобы не было переполнения, возможно нужно динамически задавать ширину этого контейнера, но не уверен. Возможно там все умнее сделано
Vyacheslav
их точно нет, сам нюхал несколько раз
Ivan Danyliuk
А кто нибудь знает, как в iOS клавиатуре добавить кнопку чтобы убрать клавиатуру с экрана? Нашел только keyboard_actions плагин, но он какой-то перемудрённый и, в добавок, не работает.
Дмитрий Митрофанов
Я недавно переехал на ios в плане пользования и постоянно ищу эту кнопку) А оказывается там клавиатура просто вниз смахивается)
Ivan Danyliuk
Эм, это в телеграмме так
Ivan Danyliuk
Ну и может ещё в других мессенджерах – в них это традиционный паттерн. Но это не фича ОС или клавиатуры, а приложения.
Ivan Danyliuk
в большинстве полях ввода есть кнопка Cancel, которая убирает клваиатуру. А если её нет, то внизу в уголке есть кнопочка (с иконокой клавы), которая прячет.
Ivan Danyliuk
Бывает ещё кнопка Done сверху клваиатуры (там где эмоджи и автокомплит показывается)
Nightwelf
Можно подробнее или пример
Nightwelf
Отлично! Спасибо!
Danny
У кого-то вылетала ошибка "There are multiple heroes that share the same tag within a subtree." при переходе на другой экран?
Nightwelf
Но все равно вопросы есть
Nightwelf
Одинаковые теги
Danny
я раньше сталкивался с одинаковыми тегами фабов, но тут что-то другое
Артур Мудрик
[
"ребята, а как в Флаттере делать что-то типа ",
{
"type": "code",
"text": "variables.scss"
},
", где перечислены основные константы для цветов, отступов и т.п.? Просто создать что-то типа ",
{
"type": "code",
"text": "styles.dart"
},
" и там внутри создать переменные и потом этот файл везде подключать?"
]
Артур Мудрик
[
"ну, я надеюсь, здесь есть ребята-фронтендеры и ясно, что за ",
{
"type": "code",
"text": "variables.scss"
},
" я имею ввиду"
]
Виталий
Создай какой нибудь класс для стилей и там в виде static полей цвета укажи,
Виталий
class ColorVariables{ static Color white = Colors.white; }
Артур Мудрик
да, так и сделал — посмотрел, как сделан файл Colors у материала
Ivan Danyliuk
Может кто встречал круговой прогресс индикатор, только не Circular (по ободку круга), а заполненный круг – как Pie Chart или как пицца ) Не могу найти что-то, а самому не хочется писать – точно должно быть такое где-то реализовано же.
iCheater iCheater
У кого есть комментарии относительно производительности приложения на flutter и на qt ?
Sergey Ivanov
А можно ли как то получить документ из firebase по определенному полю? допустим по названию?
Danny
where('name', isEqualTo: name)
Sergey Ivanov
а как полностью? к коллеции обращаться?
Sergey Ivanov
try { Firestore.instance .collection("trips") .where("createdByName", isEqualTo: "Suresh") .snapshots .listen((data) => print('Firestore response1: ${data.documents}')); } catch (e){ print('Caught Firestore exception1'); print(e); } так?
Александр Васильев
[
{
"type": "link",
"text": "https://www.reddit.com/r/FlutterDev/comments/d51o4w/were_the_flutter_team_at_google_ask_us_anything/"
}
]
Stanislav Sagan
А скажите какой оптимальный размер квадратного изображения (ширина - высота, сжатие) для мобилок, если оно будет по ширине телефона, но без возможности зумить
Егор Шепелев
Я обычно 1000*1000 делаю, чтобы наверняка. А так где-то слышал, что рекомендуют 512
Александр Васильев
лучще делать 2-3х от ширины экрана, изза плотности пикселя
Александр Васильев
в веб так делаем.. если 1к1 делать размер то изображение расплывчитое на макбуках
Александр Васильев
[
{
"type": "link",
"text": "https://ux.pub/podrobno-o-plotnosti-pikselej-v-dizajne-interfejsov/"
}
]
Stanislav Sagan
Мм, спасибо за советы, сейчас почитаю ещё, и да, вздумалось погуглить какие размеры инста делает.. почти эталон уже же ..
Stanislav Sagan
Максимальный и оптимальный размер фото в Инстаграм в пикселях — 1080 x 1080 px. Если перевести это расширение в сантиметры, то максимальный размер фото Инстаграм в сантиметрах округленно составит 29 х 29 см.
Александр Васильев
только там опятьже если делать такие фото в инсту то у тех у кого ретина дисплей - они будут размытые... вообщем это нужно на маке самому открыть и посмотреть.. такого много в инсте контента - смотрится по делитансткий..
Daniil Kolyasnikov
Ребят, как на эмуляторе андройда увеличить объем постоянной памяти ( флешка)?
Max
Инстаграм сейчас использует, кажется, 600.
Dmytro Bondarchuk
Всем привет) Мне нужно чтобы при первом старте приложение пользователю показывались подсказки("для добавление нажми эту кнопку и тд.") и при этом был заблочен(и затемнённый) остальной UI. Подскажите хотя б как правильно гуглить?)
Daniil Kolyasnikov
при запуске приложения получаешь инфо о том, пройдено ли обучение (сам решай как это хранить). Если не пройдено showDialog(context, IntroWidget);
Daniil Kolyasnikov
В IntroWidget в корне виджета делаешь полупрозрачный виджет.
Daniil Kolyasnikov
Material(color: Color(0x33000000), child: IntroWidgetBody())
Daniil Kolyasnikov
в IntroWidgetBody уже рисуешь весь свой контент
Dmytro Bondarchuk
[
"Нужно что-то такое: ",
{
"type": "link",
"text": "https://raw.githubusercontent.com/simformsolutions/flutter_showcaseview/master/preview/showcaseview.gif"
},
""
]
Dmytro Bondarchuk
[
"Нашёл пока что, если кому тоже надо ",
{
"type": "link",
"text": "https://medium.com/simform-engineering/flutter-showcaseview-package-35253106ef80"
},
""
]
Viktor Suprun
ребята, а в json_annotation можно какнить десериализовать "динамические" структуры... ну, есть у меня коллекция элементов вроде [{ type: "X", data: ...}, { type: "Y", data: ... }] и в зависимости от type в data могут быть различные данные
Kirill Zhuharev
я делал так
Kirill Zhuharev
Т.е. у меня в rpcResponse динамические данные
Kirill Zhuharev
[
{
"type": "pre",
"text": "var response = await http.post(url, body: body, headers: {\"Content-Type\": \"application/json\"});\n\n RPCResponse resp = RPCResponse.fromJson(jsonDecode(response.body));\n OffersResponse offers = OffersResponse.fromJson(resp.result);",
"language": ""
}
]
Viktor Suprun
не, это понятно, у меня примерно похожая ситуация. но чуть глубже. у меня внутри response массив динамичеких элементов...
Viktor Suprun
вроде такого. ну а в items уже модели нужного типа... и тип нужно разруливать на основе type
Viktor Suprun
я кажется придумал как это сделать, пока пытаюсь накидать прототип, но не уверен что получится))
Kirill Zhuharev
[
"да я тебе показал как, только тебе надо вместо ",
{
"type": "code",
"text": "OffersResponse offers = OffersResponse.fromJson(resp.result);"
},
" сдлеать switch по типу"
]
Dmitry Bubnenkov
А flutter под веб у вас собирается? У меня тупо в течении минуты грузит проц, потом открывает Хром и там ничего не отрисовывает
Dmitry Bubnenkov
В чем разница между двумя пунктами? Почему в первом ничего не собирается (как писал выше) а во втором работает?
Max
Собирался. Я посмотрел на то, что он выдал в браузер, и отложил до лучших времён)
|
|
|