Программирование : Dart & Flutter по-русски
Alexandr Borisovich
Тайтлы и теги совпадут и контент процентов на 90%? Значит не должно быть никаких ограничений. бан - это прям капец надо постараться, что я видел на своих сайтах изза вирусни - выкид из выдачи пока не устранишь.Лучше воспользоваться советами гугла по ссылке выше, он дает рекомендации индексации js cайтов с подменой статики
Савостьянов Андрей
Я наверное не так объяснил. Идея такая: 1. Генерируем sitemap.xml из данных API и таблицы навигатора сайта, условно каждые 6 часов серверным скриптом (это несложно). Хостим этот файл в статику, дёргаем API краулера, что sitemap.xml изменился. 2. Приходит поисковый робот, забирает наш толстый SPA, рендерит его на своей стороне (предположительно в Chrome 41), flutter web рендерит контент, который плохо читается роботом, но flutter web на этой страничке, по конкретному url заботливо меняет заголовок и мета теги (ключевые слова и т.д.). 3. Профит. Flutter web получил SEO оптимизацию!
Alexandr Borisovich
сайтмапа нужна для облегчения роботу поиска новых измененных страниц. его можно и не упомянать. 2. поисковый робот чей?гугла? он может не прочитать spa. На то не нужно надеятся. Гугл советует паппетер для генерирования статики - можете попробовать флаттер веб вместо него. Но логику подключения статики поисковиком лучше разбавить его советами, дописать пару строк в SPA для поисковика, где ему искать статику.
Савостьянов Андрей
У flutter web нет ссылок на странице. Навигация по "страницам" выполняется внутренним маршрутизатором (как в Angular). Но слушать ввод url и менять его содержимое он может. Для генерации статики из flutter web пока нет никаких инструментов, поскольку html получается довольно специфический (кастомные теги, большая глубина, много CSS в каждом теге). Значит никакого SSR / статической версии сделать не получится. Соответственно вопрос: есть ли способ проиндексировать контент такого SPA, отдав данные по url краулеру в каком-то структурированном виде? XML/JSON.
Alexandr Borisovich
[
{
"type": "link",
"text": "https://developers.google.com/search/docs/guides/javascript-seo-basics"
},
"\nВ клиентских приложениях, состоящих из одной страницы, маршрутизацию между экранами веб-приложения рекомендуется осуществлять с помощью History API. Чтобы робот Googlebot мог находить ссылки, старайтесь не использовать фрагменты для загрузки контента разных страниц."
]
Alexandr Borisovich
как я понял, если реализовывать хистори апи для ссылок и добавить структурированные данные -то он скушает SPA
Савостьянов Андрей
[
"Спасибо за помощь. То что я искал: ",
{
"type": "link",
"text": "schema.org"
},
" и json-ld в сочетании с sitemap.xml и url маршрутизацией. Это снимает вообще все вопросы по SEO."
]
Константин Бобров
подскажите, какую сборку ПО использовать для работы со Swift, чтобы был хоть какой-то хотрелоад? (Mac хз какой)
Comrade77
Ставишь flutter и вот тебе хотрелоад
Comrade77
Как ставить под macos - гугли
Константин Бобров
да коллеге дали проект переделать чуток, а на на свифте. переписывать ради 2 правок не вариант
Константин Бобров
думал вдруг кто тут знает
Дмитрий Щербаков
show Нужный тебе класс
Дмитрий
Всем привет, если создавать плагин через студию или подключить через зависимость, он автоматически регистру в GeneratedPluginRegistrant, как зарегестрировать свой класс, реализующий FlutterPlugin? Или так не делают?
Alexandr Borisovich
Скачайте готовый пример с гихаба типа получения версии ос
Alexandr Borisovich
точнее вру
Alexandr Borisovich
[
"сгенерейте шаблон, там по умолчанию версия ос вовращается\n",
{
"type": "link",
"text": "https://codelabs.developers.google.com/codelabs/write-flutter-plugin#2"
},
". Я так понял читать бесполезно, надо сразу по примеру фигачить, а там бог даст может и дойдет как все это заводится)"
]
Alexandr Borisovich
схема только для того чтобы поисковик смог сниппет составить на выдаче симпатичнее. Так-то он и без нее проиндексит, если есть доступ к контенту и сам расставит типы данных как может.
Семён undefined
я вот тоже так думаю
Семён undefined
а руководитель говорит неее
Семён undefined
нужна сео
Семён undefined
хотя там посты по интересам подбираются, смысл
Dmitry Bubnenkov
Почему у меня ни hello ни ошибка не печатаются?
Davron Asrorov
Всем привет, кто нибудь в курсе, можно ли как то admob на флаттере прикрепить как виджет? А то баннер вообще не вариант, т.к он поверх всех окон всегда, что усложняют сильно ux/ui при установке)
Timur Karimov
а он что не как виджет что-ли крепится по умолчанию?
Davron Asrorov
нет, он же как попап
Davron Asrorov
только, поверх всего приложения ещё
Ivan Palekhin-Romanov
Прошу прощения что возвращаюсь к вчерашнему холивару) что хейтеры скажут по поводу мобильного дискорда который написан на RN? Исключительно мнение хотелось бы услышать) "экспертов"
Roman Vasiliev
повесь таймаут, тогда по истечению хотя бы ошибка будет
Roman Vasiliev
если истечет, значит у тебя запрос висит
Dmitry Bubnenkov
А так почему ее нет?
Roman Vasiliev
Хочу услышать оправдания экспертов насчет Spotify, который также написан на RN и работает как кусок говна, опыт пользования - полгода, как минимум пара часов в день
Dmitry Bubnenkov
да с таймайтом сработало, но почему по дефолту его нет? Запрос на вечно зависает
Roman Vasiliev
Чтобы long-polling можно было сделать
Roman Vasiliev
Да и допустимый таймаут у каждого разный
Davron Asrorov
Неужели никого нет, кто бы с admob работал?
Ivan Palekhin-Romanov
[
"да мы уже наслушались негатива, я прошу озвучить мнение по поводу довольно качественного проекта) просто это все к тому, что можно и кусок говна написать нативно на (Java/Kotlin/Swift) а можно и на кросс платформе написать очень даже хорошо. Именно поэтому не понимаю бесконечного хейта друг друга, что дарта что (JS/TS) все делают одно общее дело, какая разница) если человек может как выразился господин ",
{
"type": "mention",
"text": "@vasilich6107"
},
" на \"шляпозяыке\" написать годный продукт, то это немного спорное утверждение мне кажется. Суждения из разряда детского сада \"Сам дурак\". Как говорится каждый дро.. как он хочет. И если человек не способен написать что то качественное и годное на том или ином языке - это не значит что это \"шляпоязык\". Просто многие на просторах соц сетей пишут js/ts гавно и все такое) но почему то именно он занял большую нишу во всех областях, будь то back,front,cross и рассусоливать почему думаю не стоит. И все же, хейтеры расскажут че там с дискордом?)"
]
admin
а чем тебе спотифи не угодил? я его юзаю с 2014 года на андроиде и все нормально, аналогично по паре часов в день, пока еду на/с работы
admin
а те кто пишет про "шляпоязык", ну высказывает это точнее в сторону других языков, просто немного не думает головой каждый язык выполняет свою задачу и каждый в чем то хорош (кроме пхп)
vasilich
“кроме пхп” это толерантная версия “шляпоязыка”?
admin
эт шутка) даже пхп находится там где он и нужен
Ivan Palekhin-Romanov
так мы услышим сегодня мнение главного "Эксперта" RN?)
admin
я на рне уже два года пишу, и если дискорд написан на РНе, то вполне неплохо работает
Дмитрий Щербаков
Тут нужно уточнить "нормально работает на нормальном железе" ;)
admin
а по твоему какое железно "нормальное"?
Дмитрий Щербаков
Где больше 4гб ram
Дмитрий Щербаков
И не atom
Dmitry Domushchey
не совсем согласен
admin
а есть кто-то у кого меньше 8 гигов оперативки в 2021?
Семён undefined
много у кого, особенно у студентов
Дмитрий Щербаков
Если иметь в виду пользователей то таких много
Дмитрий Щербаков
Даже очень
Dmitry Domushchey
написанную мною на РН приложеньку до сих пор юзает (весьма немаленькая) контора в проме на дешманских планшетах под ондроедом
Dmitry Domushchey
фичей в приложении немало, если чо
Dmitry Domushchey
ну и согласен с тем, что понаписать утечек на свифте/жаве тож можно легко =) и 8 оперативы не спасут )
admin
тут ещё нужно понимать, что те кто юзает дискорд, в большинстве геймеры, у которых железо +- нормальное
Дмитрий Щербаков
ага статистику стима можно открыть и увидеть что больше 50% играют с "ведра"
Ivan Palekhin-Romanov
Я соглашусь что +- адекватное железо надо под приложения на RN, но с оговоркой, все очень сильно зависит от специфики. Даже с умеренным кол-ом анимаций и фентифлюшек современный самртфоны 4гб оперативы справляются, ну а если взглянуть на рынок, то на данный момент большинство телефонов бюджетных на борту имеют 4 гб
Dmitry Domushchey
анимации в РН крутятся не в js-потоке
Dmitry Domushchey
запускал 5000 разных рандомно выбранных анимаций на одном экране.. для теста.. всё крутилось норм ) тормозил скроллинг =) но анимации крутились )
Дмитрий Щербаков
а по поводу js) хром вот в новой бетке добавили доступ к железу... то ли еще будет
Дмитрий Щербаков
ждем драйвера на js ??
Dmitry Domushchey
упаси боже
Dima Kotlyarov
Это вроде проект Гудини называется ? Предоставляет возможность доступ к написанию джсом драйверов
Дмитрий Щербаков
Ну пока там api для нескольких девайсов вроде usb камеры ещё что то
Павел Середа
играют ли? может люди просто в учётках сидят, я вот зачем-то себе апку стима на иос накатил, она ж будет в стим докладывать что я с неё "играю"
Дмитрий Щербаков
немного ошибся, 40%)
Семён undefined
у нас беседа про реакт что-ли?
Дмитрий Щербаков
сорян за спам)
Ivan Palekhin-Romanov
У нас беседа в целом про кросспоатформу
Павел Середа
вопрос: что не так с xamarin ? кто-то с ним сталкивался? как он в сравнении с flutter?
Миша
Доброе утро! А какая замена setState есть для StatelessWidget? Нужно для чтения с файла для последующего решения, что будет показано пользователю
admin
а вот вопрос, зачем вы спрашиваете? попробуйте сами и решите что именно для вас лучше, и рн хорош и флаттер хорош
Вадим
FutureBuilder посмотрите, если чтение файла возвращает future
Jake
[
"Какая разница между функциями где указаны скобки и без? \nvoid main() {\n Car myCar = Car(drive: slowDrive);\n print(",
{
"type": "link",
"text": "myCar.drive"
},
"); // вот этот пример\nprint(",
{
"type": "link",
"text": "myCar.drive"
},
"()); // вот этот пример\n \n}\n\nclass Car{\nCar({",
{
"type": "link",
"text": "this.drive"
},
"});\n \n Function drive;\n}\n\nvoid slowDrive(){\nprint('Drive slow');\n}\n\nvoid fastDrive(){\nprint('Drive fast');\n} вопрос гуглил уже((( скобки ",
{
"type": "link",
"text": "myCar.drive"
},
" и в ",
{
"type": "link",
"text": "myCar.drive"
},
"() обоих случаях вроде вызывается функция. Но в чем разница?"
]
Makhmud Ushamiev
всем ку! такой вопрос: нормально ли юзать CupertinoSwitch и CupertinoPageRoute в MaterialApp?
Makhmud Ushamiev
например?
Jake
[
"void main() {\n Car myCar = Car(drive: slowDrive);\n print(",
{
"type": "link",
"text": "myCar.drive"
},
");\n \n}\n\nclass Car{\nCar({",
{
"type": "link",
"text": "this.drive"
},
"});\n \n Function drive;\n}\n\nvoid slowDrive(){\nprint('Drive slow');\n}\n\nvoid fastDrive(){\nprint('Drive fast');\n} вопрос гуглил уже((("
]
Makhmud Ushamiev
ну тут мног оскобок, ты про какие именно?))))
Makhmud Ushamiev
[
"Car({",
{
"type": "link",
"text": "this.drive"
},
"});?"
]
Jake
[
"скобки ",
{
"type": "link",
"text": "myCar.drive"
},
" и в ",
{
"type": "link",
"text": "myCar.drive"
},
"() обоих случаях вроде вызывается функция. Но в чем разница?"
]
Sergey Hottabych
Даже нужно. Так и делают - создают MaterialApp, а в ней уже Купертино-виджеты. CupertinoApp сырой, и там мало настроек
Makhmud Ushamiev
аа круто) спасибо) просто думал может траблы какие из-за этого появятся)
Sergey Hottabych
Нет, они только визуалом отличаются. Это такие же виджеты. Можно спокойно в одном приложении перемешивать Material и Cupertino
Makhmud Ushamiev
ну тут просто скобки от принта.. я хз что там именно тебя смущает?????>?
Makhmud Ushamiev
???? благодарочка тебе, добрый человек)
Sergey Hottabych
Без скобок - ссылка на функцию. Это значит, что она не вызовется сразу. Используется в колбэках типа onTap.
Sergey Hottabych
Написать onTap: () => myMethod(); или onTap: myMethod; Одно и то же
Sergey Hottabych
Второй вариант короче и в Dart-стиле.
Станислав Ксенофонтов
Может я ошибаюсь, но в первом случае он должен вернуть результат выполнения функции, а во втором ссылку на объект функции.
Sergey Hottabych
Первый раз ссылка на лямбду
Sergey Hottabych
[
"Вот если бы я написал ",
{
"type": "code",
"text": "onTap: () { myMethod(); }()"
},
"\nтогда бы она сразу и выполнилась"
]
Станислав Ксенофонтов
Похоже на то. Всегда думал, что ссылка на лямбду хранится только в том случае, если ее передать переменной. Спасибо за ответ.
Олжас Сулеймен
[
"или так ",
{
"type": "pre",
"text": "(() => ...)()",
"language": ""
},
""
]
Sergey Hottabych
[
"есть даже линт на эту тему\n",
{
"type": "link",
"text": "https://dart-lang.github.io/linter/lints/unnecessary_lambdas.html"
},
""
]
Миша
Мне стало тут интересно... А кто-нить пытался на Flutter игрушку написать?
Станислав Ксенофонтов
Умельцы пишут
Олжас Сулеймен
сложности не вижу для карточных игр
Олжас Сулеймен
спрайты и тд
Алексей
Ребят, подскажите пожалуйста, как лучше сделать вложенную навигацию приложения. есть BottomNavigationBar в Scaffold, в нем 3 раздела. у каждого из 3-х разделов будут дочерние страницы. переходя по ним, нужно чтобы bottomNavBar оставался на экране и подсвечивал активный раздел
Олжас Сулеймен
если можно написать игры на html canvas'e без web gl
Олжас Сулеймен
то спокойно можно портировать их во флаттер
Sergey Hottabych
[
"Есть 2д-движки на ",
{
"type": "link",
"text": "pub.dev"
},
"\nflame и еще какой-то\nНо я бы фигней не занимался, а освоил Unity. Если охота в игры."
]
Станислав Ксенофонтов
по моему написаны модули flutter Unity.
Sergey Hottabych
Есть плагин, позволяющий виджет с игрой на Unity в приложение на Флаттере запихнуть.
Миша
вот я и думаю, что в Unity удобнее и проще, но на всякий спросил:)
Олжас Сулеймен
если что флаттер это активити
Олжас Сулеймен
которое можно переключать с нативными
Станислав Ксенофонтов
Вы мне лучше скажите Swift или Kotlin?
Arslan ??
Привет! Кто шарит во Флаттере и готов взяться за интересный проект?
Maksim Gridin
Уважайте сообщество, Прежде чем прийти и написать что-то прочитайте правила чата
Станислав Ксенофонтов
Мне пока не интересны микросервисы и бэк
Arslan ??
Что неуважительного в моем сообщении уважаемый, и где собственно правила? Вы их тут блюдёте?
Станислав Ксенофонтов
Не нравится мне в js-е приведение типов)
Дмитрий Щербаков
странный вопрос. смотря какие задачи писать под ios или andorid
Alexandr Borisovich
лучше баба красивая
Алексей Гладков
Ой вэй как точно сказано
Дмитрий Щербаков
вы серьезно?
Varga
Я о том, что сразу люди туда не лезут)
Varga
Тк видят другое немного)
Дмитрий Щербаков
ну тут вроде программисты а не борщеварки...
Sergey Hottabych
Он хотел сказать, что есть отдельный чатик для вакансий.
просто марк.
[
"Кто знает как локализовать текст уведомлений, которые отправляются из BackgroundFetch таски? Просто там надо метод использовать ",
{
"type": "code",
"text": ".of(context)"
},
", а контекста-то самого нет"
]
Gorohov Valeriy
Что используется для локализации?
Sergey Hottabych
Я EasyLocalization юзаю, там нет таких проблем.
Sergey Hottabych
Можно S.delegate вроде, это синглтон, чтобы без контекста напрямую выдергивать переводы.
Sergey Hottabych
Но это как бы хак
Gorohov Valeriy
S.current
Valentin Nechay
Здраствуйте, не подскажете как исправить в консоли гугл? Flutter 1.22.6 stable, знаю что не критично, но глаза давит
просто марк.
[
"Тоесть вместо ",
{
"type": "code",
"text": "S.of(context).key"
},
" использовать ",
{
"type": "code",
"text": "S.current.key"
},
"?"
]
Sergey Hottabych
Лучше переходи на EasyLocalization, пока не поздно. И юзай формат yaml
Sergey Hottabych
была вот такая помойка
просто марк.
Согласен, удобнее, посмотрю
Gorohov Valeriy
Как это в Excel экспортируется? Для VScode есть плагин, который дает UI интерфейс для локализации с возможностью импорта/экспорта в excel, но с такой локализацией почти невозможно работать вне VSCode.
Sergey Hottabych
Никак. В EasyLocalization поддерживается формат таблиц csv. Но это опять миллион переводов в одну колонку. yaml с отступами удобнее
Gorohov Valeriy
Это нам удобнее, а когда заказчику нужно скинуть для перевода
Sergey Hottabych
Я сегодня нашу переводчицу буду учить гитом пользоваться и yaml редактировать ))
Sergey Hottabych
А в вашем случае, наверно, лучше csv.
Gorohov Valeriy
Если есть генерация csv то это хорошо)
Gennady Kaurov
Господа, кто работал с syncfusion_flutter_charts? Вы знаете как сделать горизонтальный скролинг?
Sergey Hottabych
Конкретно с этим не работал. Но попробуй в InteractiveViewer обернуть.
Gennady Kaurov
К сожалению, не подходит(
Sergey Hottabych
В fl_chart вроде можно скроллить. Зачем ты взял какую-то малоизвестную либу?
Gennady Kaurov
С удовольствием бы спросил об этом предыдущего разраба) Переходить на новую либу и переписывать все как-то не хочется)
Валерий
перепиши. это выгоднее)
Dmitry Bubnenkov
Есть длинная строка в которой я использую интерполяцию: """ $a $b $c """ оформляю ее в столбик чтобы читалась лучше. Как мне сделать так, чтобы она в виджете Text так же в столбик НЕ отображалась?
Александр
Подскажите пожалуйста. ПЫтаюсь спарсить json из интернета, а он до конца не парсит файл. прерывается
Temurxon
нужен condition после парсинга выводить на экран
Temurxon
StreamBuilder или FutureBuilder
Александр
как это сделть подскажи пожалуйста
Александр
так а что тут не работает ?
Temurxon
в StreamBuilder внутри builder: (context,stnapshot) => if(snapshot.hasData) {return Widget();} else { return LoadingWidget();}
Александр
мне на экран выводит не надо
Temurxon
данные с json не соотвествует то что в models
Александр
билдеры это про UI а мне надо это в репозитарий закинуть в лист например
Александр
там нет никаких models
Temurxon
где response проверьте данные
Temurxon
можете city Model показать
Александр
Я не понимаю. Там нет никаких city model
Temurxon
и сам json response
Александр
I/flutter (31964): [ I/flutter (31964): I/flutter (31964): {'city': 'Abbeville', 'state': 'Louisiana'}, I/flutter (31964): {'city': 'Aberdeen', 'state': 'Maryland'}, I/flutter (31964): {'city': 'Aberdeen', 'state': 'Mississippi'}, I/flutter (31964): {'city': 'Aberdeen', 'state': 'South Dakota'}, I/flutter (31964): {'city': 'Aberdeen', 'state': 'Washington'}, I/flutter (31964): {'city': 'Abilene', 'state': 'Texas'}, I/flutter (31964): {'city': 'Abilene', 'state': 'Kansas'}, I/flutter (31964): {'city': 'Abingdon', 'state': 'Virginia'},
Александр
ну это вам нужно?
Temurxon
возвращайте значение return Future >
Александр
Ну вот смотрите. Щас нет никаких моделей, ничего никуда не возвращается. Почему парсинг прерывается ?
Дмитрий Щербаков
а там json то валидный?
Дмитрий Щербаков
по ссылке
Александр
а как проверить ?
Александр
[
{
"type": "link",
"text": "https://gist.githubusercontent.com/Lwdthe1/81818d30d23f012628aac1cdf672627d/raw/45dc8bee7b4fc349ec87931100e0f258bb59f8ea/usaCities.js"
}
]
Temurxon
может в изолят его
Дмитрий Щербаков
rfc говорит что
Александр
а что это значит?
DVS (Read The F.ng Manual) Studio (NoHello)
невалидный
Temurxon
в конце почемуто ","
Дмитрий Щербаков
кривой json
DVS (Read The F.ng Manual) Studio (NoHello)
[
"ну не может быть в нормальном json одинарная кавычка ",
{
"type": "code",
"text": "'"
},
""
]
Дмитрий Щербаков
[
{
"type": "link",
"text": "https://jsonformatter.curiousconcept.com/#"
},
" вот валидатор в браузере если чо"
]
DVS (Read The F.ng Manual) Studio (NoHello)
[
"должны быть нрмальные православные ",
{
"type": "code",
"text": "\""
},
""
]
Дмитрий Щербаков
там 270кб всего)
Дмитрий Щербаков
самый простой путь через regexp заменить ' на "
Дмитрий Щербаков
и потом уже парсить
Alexandr Borisovich
угу, стандарт двойная
|