Программирование : Dart & Flutter по-русски
tdesc
https запрос не подходит?
Vyacheslav
mailto не поддерживает вложения в файл, если я правильно понял. Только тема и тело письма
Evgeny Kot
Отправить через API mailchimp
tdesc
я про api mailchimp тоже
Vyacheslav
Спасибо, буду изучать матчасть)
admin
Любой имеил сервис заюзай
Vyacheslav
Всем привет! Подскажите плиз как задать ориентацию portrait сразу для всего приложения flutter?
Vyacheslav
чтобы не изменялось при повороте
tdesc
настроить в нативных проектах? в ios в plist
tdesc
в андроид наверно тоже в каком нить манифесте
Vyacheslav
а ну да, в андроиде знаю как сделать, сразу не подумал
Vyacheslav
с почтой вчера разобрался, но вложения не стал делать, без них нормально тоже
Vyacheslav
решил через mailto
tdesc
если только тектовое сообщение то нафиг
Vyacheslav
да, так и подумал
tdesc
html емайл не пробовал?
Vyacheslav
сделал этим import 'package:url_launcher/url_launcher.dart';
Vyacheslav
и так сойдет для прототипа
tdesc
люблю это выражение "и так сойдет"
Vyacheslav
да, перфекционистам нас не понять...
Grabli66
Главное на собеседовании его не произносить :)
Vyacheslav
мне можно)) я с другой стороны
Evgeny Kot
[
{
"type": "link",
"text": "https://twitter.com/dart_lang/status/1001951930044833792?s=19"
}
]
Smart Develop
коллеги моему клиенту нужен gps трекер ios/android - кто возьмется за деньги сделать его на flutter? один из нюансов - чтобы трекер работал в фоне на ios/android. детальное тз могу прислать в личку. рассматриваем также ветвление проекта как "open source" + отдельно commerce под "группой авторов".
Kirill Saltykov
С iOS помучаетесь :D
Smart Develop
вот и думаем или делать два трекера на ios/android или один на flutter
Smart Develop
хочется только на flutter
Ivan Frolkin
На нейтивскрипте делал такое. В фоне работает, но приложение надо чтоб в трее висело. На Андроиде так, под ios не собирали, но наверное также
Smart Develop
написал в личку - давайте рассмотрим детали
Kirill Saltykov
Так-же. В iOS можно обойти это, но надо потом Эпплу доказывать зачем и как.
Smart Develop
как доказывать?
Smart Develop
если будем на swift писать тоже доказывать?
Kirill Saltykov
Да. Именно если нужно что бы оно отсылало данные даже когда приложение полностью закрыто.
Smart Develop
ага понял благодарю за inside!
tdesc
По факту то что вы хотите это написать 2 нативных плагина для flutter на ios/andoid Flutter это магия но не настолько )
tdesc
И сложность в реализации не техническая, а с получением необходимых permissions на платформах.
Maksim Alyabyshev
[
"Кстати почему для pub не реализована функция поиска ",
{
"type": "code",
"text": "search"
},
"? Вот мне нужно установить пакет доступный для текущей версии dart, а сделать поиск без браузера невозможно, например: pub search "
]
Maksim Alyabyshev
пулл реквест - это когда зафиксил что-либо или дописал функционал, нужно писать ишшу разрабам тогда уж
Grabli66
Я пытался поднимать. Но мне не понравилось большое, по моим меркам потребление памяти вэб фреймворков. А так вроде всё есть. Выбор веб фреймворков, драйвера базы. Хотя я так понял в основном сейчас живёт драйвер для postgres. Остальные как то притихли.
Grabli66
Сейчас crystal пробую юзать для бэкенда :). На мой взгляд самый нормальный язык из компилируемых. Но это не точно :)
admin
[
"Postgres от ",
{
"type": "code",
"text": "Dart Team"
},
""
]
admin
Остальное, вроде как, нет
Grabli66
Остальное вроде как бросили
admin
[
{
"type": "link",
"text": "https://pub.dartlang.org/packages/sqljocky5"
}
]
admin
А не, пост тоже не от дарт
admin
В чем проблемка то?
Grabli66
Да. Юзай что нравится, пока нравится.
Grabli66
Если нравится си, то как вариант Java, C#, D
Grabli66
Для них есть всё всё всё. Не придётся делать свои велосипеды. Ну исключение D наверно.
Grabli66
Такая же фигня. Уже наверное штук 10 языков перепробовал :)
Grabli66
Уже кажется. Вот он язык моей мечты. А потом надоедает. И всё по новой.
Наиль Гилазиев
[
{
"type": "mention",
"text": "@smart_develop"
},
" , если вы помните, то вот тут была ветка обсуждений по поводу работы в фоне. Можете к ней обращаться , чтобы подчерпнуть информацию. Ничего доказывать Apple не нужно, если приложение правильно сконфигурировано и оформлено (gps tracker), если эта функция не скрытая от пользователя - это разрешено гайдлайнами Apple"
]
tdesc
эх такие посты бы в FAQ сразу )
Наиль Гилазиев
Ну и как Вам сказали: по сути это будут 2 модуля на нативных языках, которым можно придать 1 api для управления и обернуть это в platform channels чтобы вызывать из UI флаттера.
Smart Develop
> обернуть это в platform channels чтобы вызывать из UI флаттера.
Smart Develop
Наиль на эту тему что рекомендуете почитать?
Kirill Saltykov
[
{
"type": "link",
"text": "https://flutter.io/platform-channels/"
}
]
Evgeny Kot
Не хотите написать пару строк в G+? Я бы это в faq добавил, для комьюнити
Наиль Гилазиев
можно. в каком формате?
Наиль Гилазиев
написал портянку в G+. Сразу извиняюсь за орфографию и грамматику. Поправьте если где-то что-то очень позорное и глаз режет. Писал быстро в перерывах между рабочей деятельностью, поэтому не ругайтесь - терпите)
Evgeny Kot
?? круто, сегодня посмотрю!
Анатолий
Кстати насчет бека на дарте. Я довольно много с ним экспериментировал, и в целом он жоволтно таки удобен, кто работал с нодой вообще кучу общего найдет, принцип практически тот же. Но вот библиотеки для работы с бд не в самом свежем состоянии (не все по крайней мере). По этому придется очень много писать. По скорости он чуть медленней ноды.
Smart Develop
[
{
"type": "mention_name",
"text": "0xff00ff",
"user_id": 49566130
},
" для postgresql из ",
{
"type": "link",
"text": "https://pub.dartlang.org/packages?q=postgresql"
},
" что реально брать в бой?"
]
Анатолий
Смотри на рейтинг, там 3 поквзвтеля
Олжас Сулеймен
Redis 16 года последнее обновление стоит ли использовать на будущее? совместимость со 2
Денис Трачук
[
"Подскажите плиз есть что-нибудь типа ",
{
"type": "link",
"text": "form.io"
},
" под дарт и ангуляр-дарт?"
]
Evgeny Kot
[
"Наш первый пост! ??\n",
{
"type": "link",
"text": "https://plus.google.com/117309446649540043613/posts/HZUjNLnA39S"
},
"\nСпасибо ",
{
"type": "mention",
"text": "@nailgilaziev"
},
""
]
Владимир Соловьёв
Плюс ещё не похоронили?
Владимир Соловьёв
Он развивается? А то обновления на андроид не блещут change log'ом
Evgeny Kot
Ну, а какие есть альтернативы для комьюнити, чтобы была развитая платформа, и подходила для большого количества людей? VK? В проф сообществе рассматривается несерьёзно и не у всех есть аккаунт. FB - аналогично, хотя возможно
Анатолий
Хотя я им не пользуюсь
Анатолий
Можно туда просто ссылки дублировать
Evgeny Kot
Твиттер совсем не про это
Denis Kopitsa
Medium? Или он только для публикаций?
Evgeny Kot
Только для публикаций, там нет особо сообществ
Evgeny Kot
Странно там иметь русскоязычное сообщество. У нас реддитом почти не пользуются
tdesc
для сообществ больше ничего в голову не приходит
Evgeny Kot
Либо что-то своё писать, но это такое себе
tdesc
вопрос что называть сообществом, чего мы хотим чтобы там было
tdesc
программисты первым делом на stackoverflow лезут
tdesc
кто-то на habra, кто в медиум
Evgeny Kot
В чате невозможно что-то серьезно обсудить, сообщения уплывают. В слеке есть треды, но им мало пользуются + там тоже малореально что-то найти. В сообщество можно постить большие статьи и обсуждать их в комментах
tdesc
можно попробовать кросс посты на Медиум и в G+ и где будет народ
tdesc
например писать в G+ и оттуда публиковать на Медиум
Kirill Saltykov
Почему же нет?) Интересная затея) Да и опенсурс можно делать)))
tdesc
опенсорсный форум на dart c flutter клиентом )
Evgeny Kot
Ценю ваш оптимизм :-)
Kirill Ponomarev
При разработке Angular компонент хочется их наглядно отлаживать. Фактически создавать index.html, appcomponent и запускать webdev serve. Мне не нравится наличие папки web в корне проекта. Попробовал вложить в examples/web , так build_runner ругнулся, что папка должна быть only top level. Как навести порядок?
Evgeny Kot
А чем не нравится иметь её в корне? Ну можно сделать как под-проект, со своим pubspec
Владимир Соловьёв
Я же не против G+. Просто думал вы знаете больше про соц сеть
Владимир Соловьёв
[
"Я одно время следил за ",
{
"type": "link",
"text": "https://plus.google.com/+AndreyLipattsev"
},
" так вижу он ужё не ведёт блог."
]
Maksim Alyabyshev
[
"незнаю как вам, но мне удобнее читать контент на medium платформе, так как плашки на G+ жестокий мрак, ширина не регулируется, подсветка кода, нет тегирования контента и т.д.\nЕвгений, можно вам просто написать инструкцию к сообществу прям в ",
{
"type": "link",
"text": "README.md"
},
" вашего репозитория полезных материалов, что бы писали пулл реквест на добавление ссылки на статью, ну и так же заранее разбить данный справочник на подразделы."
]
Evgeny Kot
Хм, а если потребуется объявить что-то? Ну митап например. В гитхабе никакого оповещения нет
Maksim Alyabyshev
бинд данного сообщения в телеграм?
Maksim Alyabyshev
[
"Позволит красиво разделить один md файл описания на подразделы ",
{
"type": "link",
"text": "https://docsify-ru.js.org/#/"
},
" (это я переводил), там даже ссылка есть на github для быстрого редактирования"
]
Maksim Alyabyshev
[
"Это опубликовано на gh-pages, без левых хостингов, только dns присвоен ",
{
"type": "link",
"text": "js.org"
},
", так же через репозиторий"
]
Анатолий
Гугл плюс норм, давайте не фантазировать
Анатолий
Ато начинаются невероятные идеи
Maksim Alyabyshev
наоборот становится все проще, агрегат ссылок и инструкция находятся в одной репе, просто редактировать и маинтейнить, причем это все будет отображаться красивой страничкой (темы можно забрать из раздела docsify-awesome и подправить стили чуток).
Анатолий
Мне нужно задать вопрос и дождаться пары ответов, как это там можно сделать?
Maksim Alyabyshev
разве на medim нет системы комментариев? Или на habre их нет? Даже в docsify можно подключить discus
Maksim Alyabyshev
твое обращение все равно поидет автору контента
Анатолий
Везде есть, но в образе сообщества плюс наиболее удобный
admin
А медиум или хабр не новостные сайтики?
admin
Это вроде как не тостер, тебе нельзя просто написать статью с "памагите, хз как на флаттере сделать"
Maksim Alyabyshev
Ой ой сублимация, в описании сообщества телеграм Евгений добавляет ссылку на репозиторий в котором перечисляется список полезных материалов разделенных по группам, где также пристутсвует инструкция, написал статью, кинь ссылку в репу.
Maksim Alyabyshev
Также туда можно добавить раздел FAQ в navbar, там даже поиск реализован
Maksim Alyabyshev
И все это без создания статических страниц, они динамически отображают содержание md файлов
admin
А о чем вы вообще спорите)
Maksim Alyabyshev
О том как не ограничивать людей с выбором платформы публикации, и аккумулировать контент быстро и качественно, без лишних заморочек
Evgeny Kot
На самом деле можно делать как с чатами, просто всё дублировать. У нас есть слек, туда немного народу заходит, но заходят. Так что можно и в репу сделать и в G+ и на Хабре. Разве что поддерживать сложнее
Maksim Alyabyshev
А зачем заморачиваться с поддержкой сообществ? Есть каналы по переписке и этого вполне хватает, но полнота базы знаний на русском языке будет дополняться, через дейтельность тех или иных участников, чем больше народу вливается тем проще должен быть шаг первоначального знакомства и решения основных вопросов, вот репозиторий и будет отображать ранжированный агрегат ссылок всех статей и материалов
Maksim Alyabyshev
Главное, что бы доступ к репе был у всех админов сообщества )
Evgeny Kot
Потому что сообщество - это не только инфоомация
Evgeny Kot
Социализация очень важна
tdesc
Даёшь социальную сеть для программистов. Когда нас заменит AI будем там реабилитацию проходить )
Наиль Гилазиев
[
{
"type": "mention",
"text": "@dushes_at_work"
},
" , вот, я об этом"
]
Ivan Frolkin
У нас тут сообщество крутых ребят, позвольте задать не совсем релевантный вопрос. Я фронтендщик вообще по профессии
Ivan Frolkin
Ктонить делал на строготипизированных языках контроллеры, которые не обновляют в null значения, которые undefined со стороны фронта?
first_name last_name
[
{
"type": "mention",
"text": "@ifrolkin"
},
" для явы ",
{
"type": "link",
"text": "https://medium.com/@int02h/custom-deserialization-with-gson-1bab538c0bfa"
},
""
]
Evgeny Kot
А что они должны делать, если получают такие значения?
Ivan Frolkin
[
"Покажу на примере:\n",
{
"type": "pre",
"text": "class Model {\n id: number;\n name: string;\n dateOfBirth: DateTime;\n}",
"language": ""
},
"\nВ дотнете и спринге без дополнительных плясок с бубном при получении в запросе ",
{
"type": "code",
"text": "{ id: 1, name: 'Иван' }"
},
" при сохранении в репозиторий также ",
{
"type": "code",
"text": "dateOfBirth"
},
" `станет null"
]
Ivan Frolkin
Мне кажется не так должен работать простой crud контроллер в 2018м) поиск по теме не помогает найти элегантное решение
Ivan Frolkin
Спасибо, буду смотреть
tdesc
[
{
"type": "mention",
"text": "@nullable"
},
"?"
]
tdesc
аннотации не помогут?
Ivan Frolkin
Ну вот с nullable нуль запишет в базу, без него вообще с ошибкой выплюнет put запрос из примера выше быстронаписанный котнтроллер на спринге или дотнете
Evgeny Kot
Так вы хотите что: ошибку, или null?
first_name last_name
как я понял нужно какоето дефолтное заначение?
Ivan Frolkin
я хотел бы, чтобы такое поле в базу не писалось
Ivan Frolkin
[
"чтоб ",
{
"type": "code",
"text": "dateOfBirth"
},
" осталось таким, какое оно есть в базе"
]
Evgeny Kot
Вы в базу пишете через что? Если вы сериализуете в json - json_serializable умеет пропускать нулевые значения. Если вы используете какие-то драйверы для ДБ - надо смотреть на то, что вы юзаете
Ivan Frolkin
Никак не ожидал, что заскучаю по разнице между null и undefined на сервере)
Ivan Frolkin
При этом пропусать null не надо по хорошему, undefined тока)
Ivan Frolkin
а то на каждый чих по DTO писать и отдельному роуту это ИМХО утомительно
Smart Develop
коллеги на flutter есть что то для сохранения локальных данных на телефон (что то вроде local storage) - чтобы потом при запуске приложения можно было их прочитать?
Ivan Frolkin
[
{
"type": "link",
"text": "https://pub.dartlang.org/packages/sqflite"
},
" и ",
{
"type": "link",
"text": "https://pub.dartlang.org/packages/shared_preferences"
},
""
]
Smart Develop
Коллеги как грамотно на флаттер сделать периодический опрос url по которому получаю данные и делать обновление этих данных в интерфейсе?
Ivan Frolkin
через StreamBuilder обновлять грамотней всего на мой вкус
Smart Develop
Просто обновлять в listview интерфейсе Json данные сервера. Опрашивать раз в минуту.
tdesc
Состояние приложения должно изнутри обновляться а не с url
Smart Develop
Данные новые на урле
Smart Develop
Их читать периодически и обновлять
tdesc
Внутри приложения должен быть соотв объект его изменение перерисовка данных
Ivan Frolkin
[
"Берем StreamController, когда данные приходят отдаём их в StreamController.sink, а в StreamBuilder отдаём ",
{
"type": "link",
"text": "StreamController.stream"
},
". Там колбек, данные будут внутри ",
{
"type": "link",
"text": "snapshot.data"
},
""
]
admin
[
"У дарта есть ",
{
"type": "code",
"text": "Timer"
},
""
]
Ivan Frolkin
Колбек возвращает виджет
Ivan Frolkin
Во, а по таймеру делать запрос
Ivan Frolkin
Это самый простой способ, реально))
admin
Есть же виджет который умеет перерисовывать
admin
Закидываешь ежеминутный запрос
admin
[
"Через ",
{
"type": "code",
"text": "setState"
},
" вроде"
]
tdesc
К редаксу есть коннекты со стримами которые все за вас сделают
Ivan Frolkin
А через StreamBuilder не нужен setState. Вы напишете код, который уже написан до вас сто раз
tdesc
Получили данные положили в state
admin
Почему бы не юзать инструменты фреймворка?)
Ivan Frolkin
Это и есть инструмент фреймфорка
tdesc
Stream builder норм
Ivan Frolkin
А стримбилдер это виджет
tdesc
Чем раньше начнете юзать стримы и/или редакс тем проще будет жить потом
Анатолий
Редакс не нужен, есди компонент/виджет самодостаточен и не отдает данных наружу
tdesc
если внутри компонента можно разместить свой внутренний редакс ) или он Stateless
tdesc
или в нем нет бизнесовой логики
Smart Develop
коллеги вопрос в скрине и файлы сейчас пришлю
tdesc
Navbar повысить до statefulWidget и все будет хорошо
Maksim Alyabyshev
[
"Разъесните мне пожалуйста, правильно ли я понимаю как работает final и const\nvar a = const [1,2,3] - переменная будет хранить указатель на константный список\nпеременную ‘a’ можно будет изменить и от этого ничего не поменяется\nconst b = const [1,2,3] - если изменить b, будет ошибка на уровне compile-time.\n\nА вот final будет присвоено значение один раз и потом его уже нельзя будет поменять?\nт.е. final c = new AnyObject(), будет один раз присвоена ссылка на объект, \nследующее изменение ",
{
"type": "code",
"text": "c"
},
" приведет к ошибке в run-time?"
]
mark
да, final это неизменная ссылка на что-то, const это неизменяемый обьект (но чтобы обьект был const у него должен быть const конструктор и выполняться пара условий)
Олжас Сулеймен
пара условии это финальные поля и не рантайм переменные??
mark
ага, и все вложенные обьект с конст конструктором
Наиль Гилазиев
[
"кто встречался, подскажите, а в дебаге по исходникам dart:io ходить можно? \nFlutter. например подключил я \n",
{
"type": "code",
"text": "import 'dart:io';"
},
"\nсоздал websocket - все успешно, коннекшен есть данные приходят. \nделаешь\n",
{
"type": "code",
"text": "ws.add(_controller.text);"
},
" и данные успешно уходят.\n\nЕсли сервак отваливается, то никуда не кидается error, поэтому захотел продебажить этот метод add и дойти до уровня socket чтобы посмотреть что происходит под капотом. \nНо я ни на один уровень спуститься не смог."
]
Наиль Гилазиев
[
"Если кто-то решится помочь и протестить, удается ли в дебаге провалиться внутрь метода `",
{
"type": "code",
"text": "ws.add(_controller.text);"
},
"` просто скопируйте содержимое в ваш пустой flutter проект. ",
{
"type": "link",
"text": "https://pastebin.com/tGv6WSqK"
},
". Сервак развернул на heroku доступен всем."
]
Maksim Alyabyshev
Кто нить игрался с WebView на flutter? Интересует удобство использования js кода загруженного url и т.д.
Rigor Mortis
Добрый день! Не подскажите способ перевода строки, например "8635" в массив чисел?
first_name last_name
var string = 'Pub'; string.split('');
first_name last_name
// ['P', 'u', 'b']
|