Программирование : Dart & Flutter по-русски
???????
Это уже приватная часть
Danya??
Почему у меня с type deduction ни в одном языке проблем не было? Он мне только помогал
???????
Какой у тебя там говнокод под капотом - это уже твои заботы
neikist
Э нет. С т.з. пользователя публичная. Он пишет a.a = 5, а то что там сеттер сработал - его не волнует
neikist
Абсолютно никаких отличий с ситуацией когда не var a = 5 объявлено а когда int a = 5
Danya??
Есть ли аналог linq из C# в дарте?
neikist
По крайней мере я не слышал, если и есть что подобное - точно не от авторов дарта или флаттера
???????
Я буквально пару часов назад спрашивал
???????
[
{
"type": "link",
"text": "https://pub.dev/packages/queries"
}
]
???????
Сам еще не помацал
???????
Но выглядит годно
???????
Пездос ты, попробуй понять, где ты не прав
neikist
Если не услышу внятных аргументов кроме "сам придумай" - буду считать слив засчитанным
???????
И после этого твоего кода - я с тобой тупо общаться не буду
neikist
Кто ж так пишет? var используется в том случае когда выводимый тип очевиден из инициализации
???????
Просто потому, что от тебя будет только: "НУ Я ЖИ В ДОКУМЕНТАЦИИ ПИСАЛБ, ЧТО ТУТ num ПЕРЕДАВАТЬ НАДО БЫЛО"
neikist
Так как ты скинул выше - не пишут тупо
???????
И IDE мне не подскажет, что там передавать куда надо
neikist
Ну то дятлы. Адекватные люди не пишут
???????
Я и говорю: публичный var - для дятлов
Danya??
Там тип dynamic будет?
neikist
Нихрена. Если тип очевиден из инициализации - то вполне хорошо использовать
???????
var это не Object и не dynamic
???????
Охеренный аргумент: "НУ ТАМ ИЗ НАЗВАНИЯ ЖИ ПОНЯТНО"
???????
Он при инициализации тип подбирает
neikist
var a = 5 - в публичном интерфейсе хорошо var b = myStringName() - тоже хорошо
Danya??
Оно как дженерик что ли работает? Можно разные типы засунуть?
neikist
var a - без всего - плохо
neikist
var a = something() - тоже плохо ибо тип неочевиден из названия метода
???????
Делай как знаешь) Но я на тебя жалоб бы знатно накатал, если из за подобного проеба все развалилось бы)
???????
Чтоб прям розгами хорошенько так высекли)
Danya??
Хз что из-за его кода развалиться может)
neikist
А что бы развалилось? Тип компилятором выводится из выражения справа от =, соответственно на этапе компиляции если бы кто то попытался что другое подставить - нифига бы у него не вышло
???????
[
{
"type": "link",
"text": "https://t.me/rudart/140533"
}
]
???????
Сплошь и рядом такая херня
???????
Хорошо, что ошибки типизации у баранов раньше вываливаются
Danya??
[
{
"type": "link",
"text": "https://t.me/rudart/140552"
},
" алло"
]
???????
И начинается: ЗА ЩО, ПОЧЕМУ НЕРБОТАЕТ
neikist
Еще раз, так никто var не использует в реальности. var без инициализации - зло за которое руки отрывать нужно. И я об этом уже писал
Danya??
Твой код не противоречит его словам
???????
Дада, я уже сказал, если все твои аргументы: "НУ У МЕНЯ ТУТ НАЗВАНИЕ У ПЕРЕМЕННОЙ МНЕ ПОНЯТНОЕ" - то на этом можно завершать)
neikist
***, где я про название переменной писал??? Ткни если сможешь
Danya??
Не было такого аргумента
???????
Как скажите) Вы не в моей команде) Говнокодьте сколько хотите)
neikist
У, какой же ты упертый и слепой(
???????
Кто то тупа не знал как работает var
???????
В отличие от меня)
Денис
Пытаются доказать что var не зло?)
Danya??
Тупо кто-то не умеет читать
???????
Угу) Причем в public интерфейсе
???????
Архитекторы от бога)
neikist
Кто то тупо путает var a; и var a = 'some string';
Viktor S
Как работает var? Выводит тип, если не получается то dynamic?
Денис
Типичные фанаты динамической типизации) не спрашивай их про полиморфизм и инкапсуляцию - сломаются)
???????
[
{
"type": "link",
"text": "https://t.me/rudart/140551"
}
]
Danya??
Чево Лол Когда type deduction стал динамической типизацией?))))))
neikist
Это я то фанат динамической типизации?)) Я наоборот топлю в пользу котлина от явы из за более строгой типизации))
???????
Ну яркий пример как работает var, но советую даже этого толком не знать и не пользовать.
???????
Реально, в этом смысла нет, особенно если только вкатываешься
???????
Адекватная типизация сделает твое обучение более продуктивным
???????
Причем советую указывать и дженерики.
Viktor S
Был выведен тип int затем пытаешься присвоить String?
Danya??
Ну он нормально тут сработал, держу в курсе Ты не можешь в int присвоить не int
???????
Датыщо? Ниможит этага бытб
Viktor S
Это нормально, в Котлине так же
???????
Ну как в котлине, в этом чате не важно)
Viktor S
Позволяет не писать типы если из контекста тип может быть выведен, удобно.
Денис
var это типичная лень) если ты знаешь что за тип - напиши, если нет юзай generic) и не в коем случае не юзайте dynamic)
???????
Просто понимай, что var это именно тип, который автор проебланил в силу лени, а не Object или dynamic
???????
Прям синхронно написали)
Danya??
Хотите вам расскажу, что при type deduction программа менее хрупкая при рефакторинге, если делать все правильно?)
???????
[
"Такаяже ситуация, кстати, с ",
{
"type": "code",
"text": "final a = 0"
},
" есичо"
]
neikist
[
"Держи ссылку на офф доку. Обрати внимание на \"if the type isn’t obvious\"\n\n",
{
"type": "link",
"text": "https://dart.dev/guides/language/effective-dart/design#prefer-type-annotating-public-fields-and-top-level-variables-if-the-type-isnt-obvious"
},
""
]
???????
Я это все читал давным давно
neikist
Т.е. ты споришь еще и с авторами гайдлайнов, ок
???????
И говорю тебе по опыту проведенному в этом загончике - var противопоказан вкатывальщикам и для публичных интерфейсов
???????
И еще раз, я говорю: "пользуй на здоровье"
???????
Сведет судьба, что будешь моим подчиненным - пользовать отучу)
???????
А так - на здоровье)
???????
Я хороший "начальник")
Yerassyl
[
{
"type": "link",
"text": "https://gist.github.com/timeappkz/7ab612bab85d22b6e3f8b8c622f7b95a"
}
]
neikist
Стайлгайды в любой конторе часто адаптируются, но тем не менее во всех распространенных стайлгайдах любых языков которые я читал - предпочитается именно сокращенная запись без явного указания типа если тип компилятору и пользователю очевиден из правой части выражения
???????
[
{
"type": "link",
"text": "https://t.me/rudart/140606"
}
]
???????
Яж не запрещаю, пользуй)
neikist
А то с тем же успехом можно сказать что хаскель плохо типизирован раз там вообще тип не указывается а почти всегда выводится))
???????
Но учти, придешь в чат с ошибками типизации и var'ами - обязательно ткну носиком)
Yerassyl
Приветики, вот у меня , когда нажимаю на text field, клав. открывается на сек и сразу закрывается. Погуглил , но не получается
Viktor S
Я так и не понял в чем проблема, если не указывать типы то твой коллега не будет понимать код?
???????
Зачастую сам перестанешь понимать)
???????
Особенно в дарте, где могут быть целые цепочки преобразований из лмябд
???????
прям сплошь и рядом тут такая история
neikist
Год пишу на котлине часто используя val/var - никогда не было ошибок из за типов
???????
Ну вот будут на дарте - носиком ткну)
???????
Если проблем нет, то и судить не за что)
Viktor S
Также ни в Котлине ни в Дарте проблем не было
???????
[
{
"type": "link",
"text": "https://t.me/rudart/140626"
}
]
neikist
Правда котлин и не позволяет такого бреда как var a; без инициализации. Кто вообще эту дичь придумал у них?
Денис
[
"Вот пример того чем тот-же вар даже при 0 плох\n",
{
"type": "pre",
"text": "var a = 0;\n int b = 0;\n double c = 0;",
"language": ""
},
""
]
???????
Если интересно, могу ваши ники выписать и тагать на каждую такую проблему типизации)
admin
[
{
"type": "link",
"text": "https://github.com/flutter/flutter/blob/stable/analysis_options.yaml"
},
" давно себе в корень проекта кинул"
]
???????
[
"Тильдами моноширный в телеге обрамляется\n",
{
"type": "code",
"text": "```"
},
""
]
neikist
dynamic вообще зло
???????
[
{
"type": "pre",
"text": "```",
"language": ""
},
"\nкак код выделить?\n",
{
"type": "code",
"text": "```"
},
""
]
???????
Вот такими тильдами
???????
[
"Если в одно строку, то ",
{
"type": "code",
"text": "`"
},
"одинарными",
{
"type": "code",
"text": "`"
},
""
]
???????
Собственно, как и везде, включая markdown)
???????
Здравствуйте, я json
???????
кстати, топ 1 проблем типизаций в энтом чяте, особенно при попытках записать лямбдами)
Volodymyr Medvediev
[
"Всем привет!\nУ кого-то была такая херня со студией, что она начала сама открывать пустые окна андроид проджекта во флаттер проекте и постоянно запускать андроидовский билд…\n",
{
"type": "link",
"text": "https://github.com/flutter/flutter-intellij/issues/3259"
},
" - нашел такую ишую, пробовал почистить кеши, переустановить студию - ничего не помогает.\nМож кто знает че еще можно сделать?)"
]
Maxim
[
"Привет \nКто то сталкивался с таким случаем:\nнавигация в приложении сделана через глобальный navKey:\n",
{
"type": "code",
"text": "navKey.currentState.pushNamedAndRemoveUntil\nnavKey.currentState.pushNamed(route);\n\n"
},
{
"type": "code",
"text": "final GlobalKey _navKey = GlobalKey();"
},
"\n\nnavKey генерируется при старте app и прокидывается в middleware\n\nесли я открываю в каком то виджете диалог showDialog(context, ...etc)\nи пытаюсь перейти на другую страницу из middleware,\nто диалоги остаются открытыми, даже если закрываю все страницы, которые открывали этот диалог:\n",
{
"type": "code",
"text": "navKey.currentState.pushNamedAndRemoveUntil"
},
""
]
???????
Там диалог не в навигации
???????
на него отдельно надо pop вызывать
???????
Навигация не отвечает за модальные диалоги
Maxim
да, я так понимаю что контекст у диалога другой
Maxim
но почему, если у меня прибивается контекст родительского виджета, который этот диалог инициализировал, сам диалог не прибивается
???????
Можешь попробывать в dispose() разместить закрытие диалога, или прокидывать по контексту некий коллбэк, чтоб диалоги на него закрывались
Maxim
не самый элегантный способ)
???????
[
"Скажем ",
{
"type": "code",
"text": "final StreamController _dialogKiller = StreamController.broadcast()"
},
""
]
???????
[
"И прокидываешь по контексту через провайдер ",
{
"type": "code",
"text": "_dialogKiller.stream"
},
""
]
???????
[
"В любой момент можешь ",
{
"type": "code",
"text": "_dialogKiller.add(null);"
},
""
]
???????
Согласен, но это то, что на вскидку придумал)
Maxim
а у вас как навигация в приложении реализована?
Maxim
какой best practice?
???????
Я давно флатер не открывал, уже полгода. За бест практис точно не скажу) Автонавигация у меня сделана через where глобального блока в корне приложения
Maxim
Самое интересное, что если есть popupMenu button, то она использует тот же контекст, что и навигация между страницами, и popupMenu автоматически закрывается, когда в другую страницу переходишь
???????
Модальных окон стараюсь вообще избегать. Но о таком кейсе как у тебя - даже не думал)
???????
[
"Ну это мое решение, если на вскидку)\n",
{
"type": "link",
"text": "https://t.me/rudart/140660"
},
"\n\nА так, это надо посидеть, репу почесать)"
]
Maxim
да вот есть идеи тот же контекст заюзать для диалогов
???????
[
{
"type": "link",
"text": "http://neprivet.ru/"
}
]
???????
Да, стоит попробывать
???????
У меня была похожая проблема, кстати
???????
Тобишь когда шторка открыта и происходила смена ориентации экрана или автороутинг - была ошибка в консольки.
???????
Вроде чото подобное и делал как раз, уже не помню)
Maxim
в самом коде вижу что переход выполняется также. Пойду копать дальше
Ибраим
Есть ли программист который возьмётся залить готовое приложение на ios android ( Flutter ) есть аккаунты! И подредактировать дизайн?
Maxim
а нет, popupMenu использует useRootNavigator = false по умолчанию, dialog useRootNavigator = true
Maxim
[
{
"type": "mention",
"text": "@PlugFox"
},
" Решилось все просто:\n",
{
"type": "code",
"text": "showDialog(useRootNavigator: false, ...etc)"
},
""
]
Maxim
[
{
"type": "mention",
"text": "@PlugFox"
},
" Спасибо :)"
]
Davron Asrorov
Всем привет. Есть кто реализовывал in app purchase подписку на flutter? На IOS
Davron Asrorov
На какой либе делали?
Dmitry Vasilev
in_app_purchase
Davron Asrorov
Не сталкивались с проблемой, что при сворачивании выходит иногда много update в стрим прилетает?
Dmitry Vasilev
С каким статусом?
Davron Asrorov
С purchased
Davron Asrorov
Старые прилетают
Davron Asrorov
При сворачивании такое происходит приложения
Dmitry Vasilev
if (Platform.isIOS) { // Mark that you've delivered the purchase. Only the App Store requires // this final confirmation. InAppPurchaseConnection.instance.completePurchase(purchase); } Вызывается?
Dmitry Vasilev
Сорри за форматирование, с телефона
Davron Asrorov
Но всё равно нет-нет прилетает
Dmitry Vasilev
Вообще бывает прилетало, я валидацией закрыл ручной
Dmitry Vasilev
Проверками, что это не новая покупка
Dmitry Vasilev
По дате, идентификатору и тп
Archakov ??
Подскажите, как выровнить этот IconButton? Как я понял, он съехал из-за своих каких-то отсутпов
Archakov ??
Вот часть кода этой линии, где кнопка "плей" и слово "Iаж"
Archakov ??
[
{
"type": "link",
"text": "https://trycode.pw/c/6Q65J"
}
]
IB Akhrorov
Как мне обновить страницу
Artyom Nesterenko
Вижу кнопочку "Try Again". ??
IB Akhrorov
Но что мне туда написать
IB Akhrorov
Там есть setState
Davron Asrorov
Покажи нам код а не ui
IB Akhrorov
[
{
"type": "link",
"text": "https://github.com/II11II/weather_app_flutter-master/blob/master/lib/main.dart"
}
]
Archakov ??
Как ты получаешь инфу о погоде? Если об сервера, то просто сделай при клике на этот "Try Again" вызов функции получения данных от сервера и setState, чтобы обновить данные
IB Akhrorov
Я вызываю fetchPost() функцию
IB Akhrorov
Но увы больно не работает
Archakov ??
Я бы на твоём месте убрал бы FutureBuilder и сделал бы несколько переменных, чтобы контролировать отображение виджетов
Archakov ??
1. хранит состояние запроса 2. актуальные данные погоды
Archakov ??
fetchPost у тебя вызывается при клике, но никаких изменений кроме получения модели Weather или ошибки, она ничего не делает
IB Akhrorov
Как мне обновить ui?)
IB Akhrorov
Если примеры , чтобы изучить их
IB Akhrorov
Но данные которые я получаю Future же
Archakov ??
Попробуй сделать WeatherPage - StatefulWidget. Внутрь этого виджета перенеси fetchPost. Внутри этой функции делай получение актуальной погоды от сервера, потом делай setState и сохраняй в какую-нибудь переменную состояние запроса (отправляется, отправлен, ошибка) и в отдельной переменной JSON. Если у тебя будет StatefulWidget, то можешь добавить функцию initState и вызывать fetchPost при инициализации виджета, убрав FutureBuilder.
Archakov ??
А в NoConnectionPage прокинуть функцию fetchPost из виджета WeatherPage и вызывать её при клике "Try Again"
IB Akhrorov
если stateless не получится?
Archakov ??
Я ща сам учусь, часто гуглю вопросы и в stackoverflow нахожу ответы. Чекай как работает StatefulWidget
Archakov ??
без если. просто сделай так
Archakov ??
твой FutureBuilder, насколько я понял из доки, вызывается один раз при рендере, а тебе надо, при клике на кнопку, вызывать получение актуальных данных и соотв., нужна функция, которая будет это делать и данные сохранять где-то в переменной
Тигран Киракосов
Привет Есть ли где-то ссылка на открытые вакансии по Dart? В репозитории по ссылке на вакансии кидает на страницу с туториалом о размещении, а не на сами размещенные вакансии
Andrei Abramenko
[
{
"type": "mention",
"text": "@dartlang_jobs"
}
]
p0rsche
macos catalina, hot reload не работает. как-то можно понять? в чем причина?
Silent Bezmolvny
Поделюсь одним очевидным лайфхаком. Как известно, большинство хороших видеокурсов по дарту и флаттеру на английском языке. Если к каждому видео прилагаются субтитры, то можно их извлечь и перевести через яндекс переводчик, а затем использовать двойные субтитры в видео. Если же субтитры не прилагаются, то проблема решается путем загрузки видео на ютуб, где автоматически создаются субтитры на языке оригинала. Затем через стороннюю утилиту извлекаете эти субтитры и делаете то, что описал выше
p0rsche
сохраняю изменения (неважно, в иде или через консоль) и ничего не происходит
|