Программирование : Dart & Flutter по-русски
Serge Shkurko
Потому что все о ней были заблаговременно предупреждены и подготовились
???????
> подготовились ))))))))))))))))))))))))))))) Бегали, оборудование перешивали, софт переписывали, станки стопорили-шили)))))))))))))) Даааааааааа, все так и было, всем миром готовились))))))))))
Fearless Cry
ну юникстайм в лонге хранят и там запаса чет на несколько тысяч цивилизаций
Serge Shkurko
в принципе эта картинка описывает то, что было и будет :)
Fearless Cry
Да не будет такогг
???????
Конечно не будет, по предсказанию мая мы все уже умерли. Мертвым боятся нечего.
(;?_?) Ivan Zhuravlev ???>?
Не умерли. Календарь старый кончился, потом новый начался
???????
Ну значит метеорит всех убил или ванга. Не важно, все мертвы, ты и я.
Mitai
ну я пытаюсь курить те ссылки что ты дал, даже не флудю почти
Yerassyl
Народ, как показать время например смс, тип (только сейчас, 15 сек назад, 30 сек назад, 45 сек и т.д.) на фронте получается так могу сделать? Беру это дейт с и беру диференс, и показываю, но чтобы обновить время каждые 15 сёк, как можно сделать? Сетстейт или что то еще
Yerassyl
Они и так в стримбиулдере, ну список с дейьами
Serge Shkurko
без разницы, если ты вызовешь setState на странице - она перерисуется по новой, в случае же со стримом ты можешь намеренно обновлять только небольшой кусочек ui
Fearless Cry
насчёт перерисуется неверное утверждение
Fearless Cry
будет перестроено дерево виджетов
Yerassyl
Гайс, как отловить момент когда сокет теряет соединение? чтобы реконнект сделать сокету.
Max
Вообще и него есть ивент закрытия, но лучше доверять heartbeat-сигналам
???????????????? ???????
В вертикальной ориентации у меня несколько виджетов в столбик, как сделать, что бы когда я повернул экран, виджеты встали в ряд, а не остались в вертикали?
Aleksey
Вопрос по дарту и по get_it. Объясните пожалуйста, как функция которая принимает аргументы с определенным типом, может принять как аргумент GetIt.instance который возвращает тип GetIt?
Fearless Cry
попробовать через wrap это сделать
???????????????? ???????
окей, посмотрю
???????????????? ???????
хорошо
Yerassyl
Сколько смотрел не нашёл нормального ответа, отлавливать если сокет закрылся
Yerassyl Maikhanov
вроде какой те Exception он кидает
Yerassyl Maikhanov
по крайней мере на сервере так
Max
Много возился с сокетами в вебе, во флаттере точных функций не подскажу.
Vadim Lukichev
Вопрос про webscoketы?
Vadim Lukichev
[
{
"type": "pre",
"text": "WebSocket _webSocket;\n\n /// Connect to WebScoket\n connect(String url) {\n WebSocket.connect(url).then(_onWebSocketConnect, onError: _onWebSocketConnectionError);\n }\n\n /// On Connect Successful\n _onWebSocketConnect(webSocket) {\n print(\"Hi!!! \");\n _webSocket = webSocket;\n _webSocket\n ..pingInterval = Duration(seconds: 2)\n ..listen(\n _onWebSocketMessage,\n onError: _onWebSocketError,\n onDone: _onWebSocketClose,\n );\n }",
"language": ""
},
"\nПростой рабочий пример"
]
Vadim Lukichev
Это которые dart:io вебсокеты
Max
Для стандартных сетей я бы интервал пинга уменьшил вчетверо.
Vyatcheslav
[
"Кто пользует плагин flare_splash_screen? Не воспроизводятся flr сделанные в ",
{
"type": "link",
"text": "rive.app"
},
" При этом intro.flr из примера работает отлично. Изменился формат flr?"
]
Stanislav Sagan
Смотри видосики widget of the week
???????????????? ???????
??уже начал)
Roman Cinis
Как в флаттер вебе использовать веб шрифты (т. е. без файлов а с подтягиванием woff с сервака где он куплен)? @font-face которые
Stanislav Sagan
Вобще принято использовать Scaffold
???????????????? ???????
у меня экран без аппбара прост)
???????????????? ???????
Scaffold есть
Stanislav Sagan
Ну да, appbar который в scafold-e
Stanislav Sagan
С аппбаром как-то проще
Stanislav Sagan
Если ты конечно не по дизайну делаешь (что очень вряд ли)
Yaroslav
Доброго времени суток, У кого-то была с firebase auth ошибка "token mismatch"
Yaroslav
Все что нашел на форумах, в issues и тд уже пробовали
Fortune's Desire
[
{
"type": "link",
"text": "https://www.reddit.com/r/Flutter/comments/f0tugz/is_possible_to_change_the_max_width_of_the/?utm_medium=android_app&utm_source=share"
}
]
Fortune's Desire
Вот это матрёшка у чувака
Fekz115
140ые строки всего, лол
Alexander Vinogradov
[
"И в конце\n",
{
"type": "code",
"text": " ),\n ),\n ),\n ),\n ),\n );"
},
" канделябра"
]
Evgenii Elchev
Тред выглядит как шутка)
???????
Если ктот хочетб повозиться с линухом или вообще сделать на дарте какойнить бэк для дома (например отслеживание температуры, управление светом, полив цветочков) можете взять новую малинку и gpio пакетик для дарта) (на правах идеи, чем можно заняться скучным зимним вечером)
Fortune's Desire
Задумался написать приложуху для впна с мобилки, откуда берутся эти впнки? Меня достала реклама в готовых приложениях с плеймаркета
Alex Kharechko
[
"открыл для себя ",
{
"type": "link",
"text": "https://github.com/Flutterando/modular"
},
", структура понятная получается"
]
Evgenii Elchev
Ну, им же надо зарабатывать как то. Так то наверное у андроид есть системная настройка с vpn и приложения не нужны вообще
Evgenii Elchev
Я виртуалки обычно юзаю)
central hardware
Свой поднимается за пол часа с нулевыми навыками
Adv0cat
У некоторых хостингов при создании машинки можно прям выбрать образ с уже готовым OpenVPN на борту, и того за минут 5-10 можно с отвлечением на попить чай поидее можно развернуть впн)))
Maxim
Вам всего то нужно поднять впн или прокси на своём сереве который не в рф. Приложение не нужно, впн клиент есть в мобилке из коробки
Олжас Сулеймен
В html файле прописывает шрифты как обычно Через ксс или линком
Nana ?????? Crypto ?????? Igor
[
"Это очень интересно - имеешь в виду этот пакет или есть что-то новое?\n",
{
"type": "link",
"text": "https://github.com/danrubel/rpi_gpio.dart"
},
""
]
Maxim
С помощью дарта получится стримить видео с распбери пи или нужно писать врапперы над сишными либами/установленным софтом?
Vadim Lukichev
[
"Ничего писать не надо, главное получить поток в одном из стандартных форматов.\nНапример, HLS \n",
{
"type": "link",
"text": "https://link.medium.com/kYQDepKQV3"
},
""
]
Roman Cinis
Но это же костыль — после изменений в флаттере и билда этой строки в голове снова не будет. Неужели нельзя по человечески, не все любят OFL шрифты...
Vadim Lukichev
[
"Вообще пакет видеоплеера использует exoplayer под капотом, а там, к сожалению, до сих пор не могут родить поддержку RTSP формата, который де-факто стандарт в видеонаблюдении, при реализации которого станут доступны 99% ip-камер и видеорегистраторов. И под малинку конечно куча вариантов как этот поток получить.\n\n",
{
"type": "link",
"text": "https://github.com/google/ExoPlayer/issues/55"
},
""
]
Maxim
опять же нужен ffmpeg и все сводится по сути к вызову команд из приложения и записи в файл/трансляции в поток который потом нужно принимать каким нибудь плеером
Vadim Lukichev
А ip-камеру сейчас можно купить за 1тыр на али, меньше чем родная pi
Vadim Lukichev
Это работает из коробки. Любому решению «что-то нужно», свой стриминговый сервер писать на уровне video4linux, ради увлечения не все могут потянуть))
NewBalanceM5
на питоне делал, только для датчика движения
Vadim Lukichev
Да, рынок видеонаблюдения и стриминга огромный, как и количество решений под него, как хардварных так и софтварных, на самых разных уровнях. Просто если смотреть конкретно под малинку и опенсорс, самыми «готовыми» для использования это ffmpeg и бесчисленные обертки над ним и есть ещё motion, если нужна готовая система видеонаблюдения тоже очень популярное. Из сишных библиотек многие используют live555. Ну и платных море.
NewBalanceM5
блин, а я тогда не знал и для музея надо было срочно сделать, пришлось свое изобретать
Александр
Что то закрывается эмулятор в android studio
Александр
кто нибудь сталкивался?
Григорий Коваленко
Там ведь снизу написано
Григорий Коваленко
"Попробуйте переключиться на софтверный рендеринг"
Григорий Коваленко
это в настройках эмулятора делается
Григорий Коваленко
А вообще, судя по тексту, с драйверами на видяху на компе что-то не то
Evgeny Cherkasov
MediaPlayer поддерживает RTSP. Но не уверен что есть Flutter плагин с ним работает.
Vadim Lukichev
Да, есть, только плагинов сходу не видно. Я так понимаю, выбрали exoplayer как дефолтный плеер с точки зрения больших возможностей поддержки DASH, Smoothstreaming и т.д. У меня правда, по этой теме во флаттер, задача была более специфическая - отображать raw h264 потоки c UDP транспорта.
Олжас Сулеймен
Тогда дартом подсовывать
Олжас Сулеймен
Отдельный main для веба
Roman Cinis
Как? Поконкретней не подскажите? Спасибо
Олжас Сулеймен
В нем подсовывает шрифты и вызываете основной майн
Олжас Сулеймен
Через dart:html
Roman Cinis
А есть примеры скажем на гихабе? Я ещё не настолько силён в дарте
Олжас Сулеймен
[
"Начать отсюда можно\n",
{
"type": "link",
"text": "https://dart.dev/tutorials/web/low-level-html/add-elements"
},
""
]
Roman Cinis
Спасибо, почитаю. Если что — снова буду сюда спамить :D
Evgeny Cherkasov
В ExoPlayer кстати есть форк с поддержкой RTSP. Может его можно как то в плагин video_player прикрутить.
???????
Умный дом или миникомпьютер для мото/машины ты тоже на виртуалке будешь держать?) Яж и скинул в контексте: вот, поцаны, релеха, пользуйтесь)
Radomir Epur
[
"Привет всем. Есть вопрос. Проект падает с ошибкой\n",
{
"type": "code",
"text": "Invalid arguments(-s): string is not well-formed UTF-16"
},
"\nСкорее всего он ругается что в тексте содержится следующая иконка:\n",
{
"type": "link",
"text": "https://vk.com/emoji/e/f09f92a2.png"
},
"\nВ тексте есть и другие иконки, но с их воспроизведением все ок. Гуглежка ошибки не привела ни к чему. Подскажите что можно сделать в этом случае?"
]
???????
[
"Ну для начала попробуй выводить через ",
{
"type": "code",
"text": "String.fromCharCode()"
},
""
]
Max
А ты точно понимаешь Дартовские runes, их смысл и способы использования?
Radomir Epur
Я точно НЕ понимаю Дартовские runes, их смысл и способы использования.))
???????
[
{
"type": "link",
"text": "https://api.dart.dev/stable/2.7.1/dart-core/Runes-class.html"
}
]
Max
Тогда просто прочитай внимательно про них. Это решит твою проблему.
Radomir Epur
Спасибо. Пойду читать.
Александр
Ребята, а как мне сделать, что бы можно было постепенно загружать видео, блоками. Где, куда их сохранять, если скачиваешь с firebase, что бы потом к ним можно было иметь доступ?
Александр
а где они на телефоне будут хранится ?
Александр
и как их в это где записывать ?
Александр
ну куда вообще мне копать ?
Max
Я имею в виду - выглядит, как информация для хранения в памяти. Потому что памяти нынче ставят много, долгое хранение не нужно, а быстрый доступ - важен.
???????
Он жеж чанками хочет 1 ведос качать
???????
Если это так, то сразу и конкатенируй
Александр
а вообще логику в трех словах можете описать ?
???????
[
"Ну смари, оперировать тебе надо либо байтовым массивом (Uint8List)\n",
{
"type": "link",
"text": "https://pub.dev/documentation/http/latest/http/Request-class.html"
},
"\n\nВот тут bodyBytes"
]
???????
[
"Либо вот этой штукой\n",
{
"type": "link",
"text": "https://pub.dev/documentation/http/latest/http/MultipartFile-class.html"
},
""
]
Max
Для меня выглядит так: грузишь чанки в list прямо в виджете, подсовываешь проигрывателю следующий по событию окончания предыдущего.
???????
[
"Либо вот этой\n",
{
"type": "link",
"text": "https://pub.dev/documentation/http/latest/http/ByteStream-class.html"
},
""
]
???????
Насчет проигрывателя - уже не знаю. Просто рассказываю как получить из чанков 1 ведос. API твоего виджета проигрывания - без понятия, смотри по месту, как и что.
???????
Если у тебя такие большие файлы, что за раз не скачаешь, ты не разоришься на фаербейсе то?)
Александр
не, не. Я не так объяснил. Файлы как раз таки маленькие. Их просто много, но мне нужно, что бы приложение в сторе весило мало, поэтому нужно сделать постепенную загрузку сериями
???????
Ну схороняй на диск)
???????
Либо клади в hive
???????
Тогда тут вообще никакого секрета нету)
???????
Только если в hive, то бери LazyBox
???????
А не пролюбись с просто Box
???????
В скуль лайт только не додумайся ложить) В скуль ты максимум можешь позволить себе id + информацию + путь на диске
Max
Не пробовал hive, но по описаниям звучит так, что может не хватить скорости. К тому же - проигрыватель же прямо оттуда не схавает, значит, по крайней мере для текущего чанка храниться будут два экземпляра?
Александр
Т.е. я скачиваю получается файл по ссылке, ак потом кидаю его в корбку и все там само запишется куда нужно ?)
???????
Не, он не чанками получает
???????
Он целиком качает, просто кучу маленьких
???????
Типа тиктока-инстаграмма-двача
???????
Ну ты понял, коротенькие видосы)
???????
Только коробка должна быть LazyBox
Александр
Спасибо мистер Фокс
???????
Ну или можешь на диск писать, а в просто Box - основную информацию по файлу и путь до файла
???????
[
{
"type": "link",
"text": "https://docs.hivedb.dev/#/advanced/lazy_box"
}
]
???????
Вот тут все читай-листай
???????
[
"И да, твой файл это ",
{
"type": "code",
"text": "Uint8List"
},
""
]
???????
Тоже не пролюбись с типом под него)
???????
[
{
"type": "code",
"text": "Response.bodyBytes"
}
]
???????
В местах откуда я пришел, по русски это называется "Двоичные Данные"
???????
Ну или проще говоря, это массив байт
???????
hive должен прекрасно работать именно с этим типом в твоем кейсе
???????
[
{
"type": "link",
"text": "https://api.dart.dev/stable/2.7.1/dart-typed_data/Uint8List-class.html"
}
]
Александр
ок, попробую учесть )
???????
[
"Итого тебе нужен примерно такой класс для адаптера hive:\n\n",
{
"type": "code",
"text": "class Video {\n int size;\n int timeLength;\n String fileNameWithExt;\n String ext;\n String title;\n Uint8List data;\n}"
},
""
]
Александр
тысячу благодарностей
???????
Размер в байтах - может быть геттером к data А расширение ведоса можно определять по первым байтам data по сигнатуре (в инетике есть сайты с сигнатурами всех популярных форматов).
???????
Но в целом, если твой бэк это отдает, то смысл заморачиваться)
NewBalanceM5
фига, у лиса хватает терпения
Artem
Пасоны не могу найти на гитхабе проект в котором есть аппы под Андроид и айос + вебвапп
Artem
Мб у кого в закладках есть?)
Jeka Goroshkin
[
"здрасьте! хотел сделать статический метод в экстеншене - объявление метода не вызывает ошибок, но при вызове - пишет method not found.\nхотел сделать:\n",
{
"type": "code",
"text": "int.range(10, 30)"
},
""
]
Evgenii Elchev
А файл импортировал с extension?
Jeka Goroshkin
да, и в дартпаде пробовал
Jeka Goroshkin
[
"пришлось делать хрень вида\n",
{
"type": "code",
"text": "10.rangeTo(30)"
},
"\n:)"
]
Jeka Goroshkin
(уж проще глобальную функцию написать, раз такое дело)
Fearless Cry
так экстеншен применяется к объекту а не типу
Jeka Goroshkin
угу) но технически я не вижу разницы - расширять тип обычными методами либо статическими, просто в статическом не доступен this, который нам тут и не нужен.
Fearless Cry
у статического метода нет доступа к объекту потому что он не привязан к нему
Fearless Cry
технически как раз то тчо ты говоришь невозможно
Fearless Cry
в int.something() ты не можешь делать this потому что МЕТОД СТАТИЧЕСКИЙ
Jeka Goroshkin
компилятор же знает на ком вызывается метод - значит может понять и поискать нет ли статического) в общем, я хотел красивость в стиле int.parse()
Fearless Cry
чем это отличается от просто статического мтеода?
Fearless Cry
int.parse vs parseInt?
Jeka Goroshkin
да просто идея такая возникла, на int повешать, оказалось что нельзя - но я не понимаю почему такое ограничение) может где-то расписана причина
admin
лучше доки почитать
Evgenii Elchev
Там там проще и не нужен доступ к this
Fearless Cry
этот доступ и невозможен
Evgenii Elchev
Так он ему и не нужен
Fearless Cry
ну не нужен и не нужен
Evgenii Elchev
Int summ(Int a, Int b) { return a + b}
Jeka Goroshkin
может завезут позже статику в экстеншены
Evgenii Elchev
Завернуть такое в экстеншен и юзать Int.summ(2, 3)
Evgenii Elchev
Просто для объединения в едином именованном пространстве
Jeka Goroshkin
так не заворачивается же)
Evgenii Elchev
Так я про this писал
Jeka Goroshkin
[
"и вызов будет типа\n",
{
"type": "code",
"text": "100500.range(10, 30)"
},
" \n?"
]
Evgenii Elchev
Эм э, нет.
Jeka Goroshkin
я не вижу другого способа, кроме как вызвать на конкретном числе
Fearless Cry
просто статический метод
Jeka Goroshkin
в примере выше: Int - это наш класс-хэлпер? так не интересно)
Fearless Cry
можно без хелпера
Fearless Cry
что документацию?
Alex Kharechko
подскажите, вот этот цвет в CustomScrollView тянется из accentColor, как можно его задать в теме?
Fearless Cry
ThemeData( accentColor: color) ?
Alex Kharechko
ну тогда весь accentColor поменяю, мне надо только вэтом месте
Alex Kharechko
наверное над данным CustomScrollView надо
Fearless Cry
тогда оберни твой custom scroll view в Theme(data: Theme.of(context).copyWith(accentColor: color), child: ТВОЙ СКРОЛЛ ВЬЮ)
Evgenii Elchev
В нельзя глобально задавать уточняющиеся парметры? Например цвет для TextField? Я вроде даже параметр нашёл в ThemeData, но он чего то не работает
Fearless Cry
тут речь про то что нужно поменять парамтер только в одном месте
Evgenii Elchev
[
{
"type": "code",
"text": "class MyApp extends StatelessWidget {\n @override\n Widget build(BuildContext context) {\n return MaterialApp(\n initialRoute: '/',\n onGenerateRoute: routerFactory,\n title: 'Flutter Demo',\n theme: ThemeData(\n inputDecorationTheme: InputDecorationTheme(\n focusColor: Colors.black,\n fillColor: Colors.black,\n hoverColor: Colors.black),\n primarySwatch: Colors.blue,\n ),\n );\n }\n}"
}
]
Fearless Cry
только для скролл вью
Evgenii Elchev
Да я про свою тему спрашиваю
Fearless Cry
Ну посмотрите куда смотрит TextField и меняйте этот парамтер в теме
|