Программирование : Dart & Flutter по-русски
Evgenii Elchev
ты слишком много конфентриуешься на какой то теории. Ты монимаешь зачем тебе писать void? понимаешь что надо писать внутри {} что бы оно работало, замечательно, теперь используй это
Evgenii Elchev
голова у человека работает по непонятным законам, ты можешь читать все свою жизнь одно и тоже утверждение каждый день, и каждый день понимать его по разному)
Mitai
о кажется придумал, грядки!
Mitai
начало { и конец } uhzlrb
NewBalanceM5
ну значит копай дальше
Mitai
херня какая то а не объяснение((
Evgenii Elchev
Я долго преподаю и знаю что есть несколько типов студентов: 1) смотрят ничего не понимаю, забивают 2) смотрят, ничего не понимают, повторяют за учителем больше ничего не делают 3) смотрят, ничего не понимают, разводят бурную деятельность, смотрят за день 100500 видео, задают 100500 неважных вопросов, пишут свои конспекты делая уопор на неважных вещах 4) смотрят, ничего не понимают, делают как показано, смотрят еще раз, делают то же самое сами, пробуют что то изменить, у них все ломается, сидят думают, еще раз пробуют по другому, и так пока не заработает, потом приходят и говорят, я вот там пробовол вот так и так, оно не работало, а вот так и так заработало, я правильно сделал? А что можно еще попробовать сделать что бы работало как надо. Слушают ответ и уходят переделаывать, снова пробовать. ПРограммисты выходят только из 4ых
Evgenii Elchev
а ты походу 3ий
Mitai
почему мы скатились к моей личности и ее анализу?
Evgenii Elchev
потому что я хочу тебе помочь
Mitai
у нас же тут чат не про психологию и подтипы личности
Evgenii Elchev
ну у нас и не про грядки чат, че уж там)
Evgenii Elchev
и не про изучение, а про язык и флаттер. Твои вопросы ни про то ни про другое
Mitai
грядки являются попыткой объяснить простыми словами ( не академическим языком ) конструкцию { } человеку который ни когда не писал код
Anton Zheltov
Попробуй в терминале в папке ios проекта сначала flutter clean, потом удали папку pods потом pod install
Evgenii Elchev
ну так это вопрос "обяснения" а не "языка"
Evgenii Elchev
иди в чат для преподавателей или студентов, и там общайся на тему обяснения)
Mitai
я пишу там где нужно
Evgenii Elchev
а я не там, ок)
Evgeny Cherkasov
А в чем сложность понимания конструкции {}? Она просто обозначает начало и конец
vasilich
Назови старт и финиш)))
Dagba
Подскажите пожайлуста как мне слушать изменение maxScrollExtent у listView
Dagba
допустим если я не скроллю а удаляю ячейку из списка
Dagba
либо как отловить событие удаления ячейки из scrollview
Evgeny Cherkasov
Если возникают такие проблемы, то возможно надо начать вообще с азов - общего понимания как устроен компьютер и что такое программа для него.
Evgenii Elchev
[
"блин, я тут откапал свой доклад про функциональное программирование, понастольгировал, и понял, что подходк к работе с UI который я рассказываю со второй половины доклада, это это почти что блок ангела) ",
{
"type": "link",
"text": "https://www.youtube.com/watch?v=Bepwx4j_vvA&feature=emb_logo"
},
""
]
IB Akhrorov
Добрый день Проблема: При скроле вниз ListVIew не скролиться вместе с grid view
IB Akhrorov
Column [ ListView.builder(...), StaggeredGridView.countBuilder()]
Max Team
по моему что тебе надо listView и StaggeredGridView завернуть в customScrollView. Lf b djj,ot cltkfnm bnp yb[ cjjndtncnde.obt slivers
Max Team
* да и вообще все эти виджеты переделать в slivers
recvec
[
"Всем привет!\nРешил использовать Google Fonts в своем приложении.\n",
{
"type": "link",
"text": "https://pub.dev/packages/google_fonts"
},
"\nЭто решение предлагает два варианта установки шрифтов: 1) с выгрузкой из интернета; 2) с предварительной выкачкой в папку assets.\n\nМеня удовлетворяет первый вариант, но в конце readme этой либы встретил информацию о необходимости подключения лицензии для шрифтов. Возник вопрос, это требование касалось только второго варианта, при ручном задании шрифтов, или в любом случае это необходимо делать?\nСпасибо."
]
IB Akhrorov
попробую спасибо
Sergey Salnikov
[
{
"type": "mention",
"text": "@Jonfir"
},
" некоторые советуют и цитируют не разбираясь в вопросе\n\nа для тех кто не разбирается - вот мой старый мессадж\n",
{
"type": "mention_name",
"text": "Evgeny",
"user_id": 190107100
},
""
]
Sergey Salnikov
это я к этому месаджу)
Evgenii Elchev
сложно, ты дал для меня пояснение, или говоришь что я давал не верные советы?) я просто из контекста уже вылелел за ночь)
Evgenii Elchev
а, все понял)
Sergey Salnikov
надо было ответить тебе и ссылку на свой месадж вставить эт я чёт тупанул)
???????
Обнял. Буду каждый раз пересылать на вопрос: "provider vs чото там"
Sergey Salnikov
и тем кто пишет provider - это state management ))
Sergey Salnikov
тьфу я не сразу въехал что vs в контексте state management )
???????
Ага) Тут эти вопросы каждый день)
Яўген
Есть ли простой способ узнать, изменялся ли объект? Или по классике - пройти по всем полям и проверить?
???????
А подписаться на изменения не?
Roman Vasiliev
Сделать объект с состоянием, которое будет изменяться при вызове сеттеров полей, если состояние поменялось - дергать слушателей
???????
А так, если постфактум, то либо заведи булево, либо, если могешь выгружать в новый инстанс - переопредели ==
???????
Но логичнее всего банально подписываться на изменения
???????
Стрим контроллер и сеттеры у полей
Яўген
Вроде еще у объектов есть какой-то хэш? Он не меняется при изменении объекта?
???????
Ну если сделаешь чтоб менялся - будет
Яўген
Типа, сохранить начальный хэш и потом посмотреть
Evgenii Elchev
сделать объект не мутабельным, и переопределить ==
Яўген
Хорошо, а если, скажем, мы изменили содержимое поля, а потом откатили?
Roman Vasiliev
Только придется хеши хранить
Evgenii Elchev
самый тру вей
Roman Vasiliev
История хешей
Яўген
Спасибо всем, буду что-нибудь пробовать)
???????
Если что, можешь в лоб просто брать хэш всех полей и применять к ним XOR
???????
Не 100% точность, но вполне достаточная должна быть
???????
[
"Смотрите чо нашелб\n",
{
"type": "link",
"text": "https://pub.dev/packages/grinder"
},
""
]
???????
[
"Нашел отсюда\n",
{
"type": "link",
"text": "https://github.com/dart-lang/dart-services"
},
""
]
Яўген
Стоп, а разве гриндер это не сеть знакомств?)))
???????
Ну и интересы у тебя)
???????
Ладно бы еще шлифовальный станок вспомнил...
Яўген
Вы че?!) Я не пользовался ни разу, просто слышал))
Happy
Это чтобы шишки перемалывать)
Evgenii Elchev
и правда, где это видано, что бы парня, девушки интересовали)
Happy
Ахах, бред какой то)
Яўген
И все тут знают, что это такое))
???????
Лол, не подловишь)
Roman Vasiliev
как вариант
Яўген
Я, кстати, думал что эта сеть для всех, а оно вот оно как??
???????
Даааа, думал, конечно)
Roman Vasiliev
Для всех этих
Happy
С ценником которые?)
ilx13
Когда с xcode запускаю проект инсталится и запускается. Но с вскод не получается. Бесконечная загрузка в шаге installing and launching. Никто не столкнулся ребята?
Evgenii Elchev
симулятор грохни и заново открой
Evgenii Elchev
сделай клин
Evgenii Elchev
еще лучше комп перезапусти)
Evgenii Elchev
7 бед - один резет
Evgenii Elchev
это цитата с раннего баша
ilx13
Да отлично сказано. Пробую. Как говорит Лис, сис админом был)
Artem Shkryab
Хелп. Есть фотка в виджете который может ее зумить. Етот виджет лежит в дисмиссабл. Если увеличить фотку, и попробовать ее свайпнуть, жест перехватывает дисмиссабл, как можно его отключить? Можно ли сделать что бы он пропускал тач евенты сквозь себя?
Ярослав Макаров
[
"Здравствуйте. Помогите пжта разобраться с настройкой окружения под винду. При запуске тестового проекта получаю такую ошибку:\nLaunching lib\\main.dart on Android SDK built for x86 64 in debug mode...\nRunning Gradle task 'assembleDebug'...\nError: Could not find or load main class ",
{
"type": "link",
"text": "java.se.ee"
},
"\nFinished with error: Gradle task assembleDebug failed with exit code 1\n\nflutter doctor -v вывод\n[v] Flutter (Channel stable, v1.12.13+hotfix.9, on Microsoft Windows [Version 10.0.18363.778], locale en-US)\n • Flutter version 1.12.13+hotfix.9 at C:\\src\\flutter\n • Framework revision f139b11009 (3 weeks ago), 2020-03-30 13:57:30 -0700\n • Engine revision af51afceb8\n • Dart version 2.7.2\n\n\n[v] Android toolchain - develop for Android devices (Android SDK version 29.0.3)\n • Android SDK at C:\\Users\\Teq\\AppData\\Local\\Android\\sdk\n • Android NDK location not configured (optional; useful for native profiling support)\n • Platform android-29, build-tools 29.0.3\n • Java binary at: C:\\Program Files\\Android\\Android Studio\\jre\\bin\\java\n • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)\n • All Android licenses accepted.\n\n[v] Android Studio (version 3.6)\n • Android Studio at C:\\Program Files\\Android\\Android Studio\n • Flutter plugin version 45.1.1\n • Dart plugin version 192.7761\n • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b04)\n\n[v] VS Code, 64-bit edition (version 1.44.2)\n • VS Code at C:\\Program Files\\Microsoft VS Code\n • Flutter extension version 3.9.1\n\n[v] Connected device (1 available)\n • Android SDK built for x86 64 • emulator-5554 • android-x64 • Android 10 (API 29) (emulator)\n\n• No issues found!\n\nНастройка переменных\n",
{
"type": "link",
"text": "https://i.stack.imgur.com/QaLgw.png"
},
""
]
Dmitriy Orteney
[
"вероятно ",
{
"type": "code",
"text": "--add-modules java.se.ee"
},
" лишние в JAVA_OPTS"
]
Sergey Salnikov
[
"Если у тебя в одном и втором слушается один жест - то как ты разрулишь что тебе делать - тащить фотку или дисмисить?\n\nесли разные жесты - всё просто, когда слушается один и тот же - сразу возникают вопросы\n\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/advanced/gestures#gesture-disambiguation"
},
""
]
Artem Shkryab
у меня есть булиан который тру если фотка в зуме
Sergey Salnikov
когда она зумед - никаго дисмиса? только двигаем фотку?
Artem Shkryab
угу, вот так и нужно
Sergey Salnikov
выпиливай Dismissible из дерева - тогда он не перехватит gestures либо копипастни его и добавь занулятор обработчиков жестов по флагу типа isActive: false но первый вариант лучше
Artem Shkryab
вот так сейчас и сделал, убираю с дерева, но в этот момент жест теряется, и нужно еще рас зажать двумя пальцами
Roman Vasiliev
Это скорее всего нужно на GestureDetector'ах делать
Sergey Salnikov
Dismissible на нём и живёт
Roman Vasiliev
Чтобы они события съедали
Roman Vasiliev
Внутренний будет перехватывать свое и до Dismissible не дойдет
Sergey Salnikov
какой жест ждёт виджет зума?
Ярослав Макаров
[
"Без этого другая ошибка\nflutter doctor --android-licenses\nException in thread \"main\" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema\n at com.android.repository.api.SchemaModule$SchemaModuleVersion. (",
{
"type": "link",
"text": "SchemaModule.java:156"
},
")\n at com.android.repository.api.SchemaModule.(",
{
"type": "link",
"text": "SchemaModule.java:75"
},
")\n at com.android.sdklib.repository.AndroidSdkHandler.(",
{
"type": "link",
"text": "AndroidSdkHandler.java:81"
},
")\n at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(",
{
"type": "link",
"text": "SdkManagerCli.java:73"
},
")\n at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(",
{
"type": "link",
"text": "SdkManagerCli.java:48"
},
")\nCaused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema\n at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)\n at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)\n at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)\n ... 5 more"
]
Roman Vasiliev
Сдк кривой наверное
Sergey Salnikov
походу тебе придётся написать свой виджет который держит стейт с чего начался gesture если начался со scale то все drag перемещают если начался с drag - делашь анимацию dissmiss возьми за основу Dismissible и встрой туда
Roman Vasiliev
Два GestureDetector по идее не могут одно и то же перехватить, они точно есть в дереве?
Sergey Salnikov
[
"это называется Gesture disambiguation\n",
{
"type": "link",
"text": "https://flutter.dev/docs/development/ui/advanced/gestures#gesture-disambiguation"
},
""
]
Roman Vasiliev
Я про это и говорю
Roman Vasiliev
Если это будет, то по идее должно сработать как ожидается
Roman Vasiliev
На скейл - зум, на свайп - диссмисс
Sergey Salnikov
ты не понял что хочет Артём
Pavel Vasilenko
Коллеги, подскажите, пожалуйста. Есть два вопроса по организации приложения: 1) Корректно ли в блок передавать контекст для работы с данными провайдера или для каких-либо других целей? 2) Если на каждую страницу есть по блоку для работы с подгружаемыми данными. Корректно ли хранить где-нибудь последние варианты стейтов и подсовывать их при очередной инициализации блока, чтобы пользователь не ожидал загрузки данных?
Roman Vasiliev
А, упустил момент
Roman Vasiliev
Нет, секунду, я все правильно понял
Roman Vasiliev
Пока жест не закончен, дерево дергать нет смысла
Roman Vasiliev
Если бы количество зума оставалось после окончания жеста, тогда бы можно было отключать флагами, а так не сработает
Ярослав Макаров
Что это значит?
Roman Vasiliev
Файлы кривые
Sergey Salnikov
ты не понял если начался scale без завершения этого жеста нужно двигать, но drag перехватывает dismissible
Roman Vasiliev
Сдк перекачай, возможно поможет, но не факт, зато быстро
Ярослав Макаров
Не думаю))
Roman Vasiliev
Ну тогда трать часы на поиск решения
Ярослав Макаров
Спасибо за дельный совет
Roman Vasiliev
У тебя класс найти не может, вполне вероятен такой вариант
Dmitriy Orteney
Можешь ещё попробовать jdk до 8 опустить или JAVA_HOME поставить на ту, которая в студии идет
Ярослав Макаров
Первое пробовал не помогло, второе сейчас посмотрю
Artem Shkryab
значит, копирнул дисмиссабл, добавил поле enable в конструктор, и и в нем зануляю оброботчик жестов по надобности, все работает отлично
Sergey Salnikov
1. не надо тянуть context - правило зависимости внутренних/внешних слоёв 2. hydrated bloc тебе поможет, либо пиши своё
Roman Vasiliev
Ок, возможно
Ярослав Макаров
Как узнать какая со студией идёт? Смотреть папку Android SDK location?
ilx13
Нет. Не получается. С терминала flutter run пашет нормально.
4??uzhoy .
hydrated bloc используется вместе с библиотекой же ? или это какой то облегченный вариант просто
Sergey Salnikov
это расширение над bloc реализации Феликса персистит стейт и подставляет в initState
Ярослав Макаров
Мне путь нужен
ilx13
Есть варианты еще ребята
Константин Буланов
Коллеги, а какая максимальная величина иконки в TapBar?
Константин Буланов
У меня просто высота не важно какого размера я добавляю картинку устанавливается не более 50 :(
?
Кто-то знает? Как можно в Flutter подучить размер .mp4 файла по прямой ссылке?
Ruslan Kryzhanovskyi
привет, кто-то занимался локализацией info.plist? Надо изменить описание пермишнов взависимости от локали которая выбрана через easy_localization
Denis Bystruev
[
"Если сервер в заголовке http отдаёт параметр ",
{
"type": "code",
"text": "'content-length'"
},
", то можно вместо http.get сделать http.head, и потом решать, скачивать файл, или нет: ",
{
"type": "link",
"text": "https://pub.dev/documentation/http/latest/http/head.html"
},
""
]
Александр Саньков
как работает конструкция this?.function ?
Александр Саньков
что значит вопросительный знак после this?
Sergiy Vergun
Проверка на null
???????
Если null не выполнять
Александр Саньков
спасибо
Pavel Vasilenko
А зачем, интересно, проверять this?
Alexander Vinogradov
Действительно
Ivan Dembicki
Ну, вдруг this ушел на обед.
Alexander Vinogradov
[
"Смотришь ",
{
"type": "code",
"text": "this"
},
" а он ",
{
"type": "code",
"text": "null"
},
". Что творится в Dart-е то?"
]
Pavel Vasilenko
Шутки шутите?
IB Akhrorov
Использовал sliverapbar sliverfillreaming
Roman Vasiliev
Можно типа такого состряпать final a = b?.foo() ?? "default text"; Удобно
Пашка
так а зачем b?.foo()
Пашка
если ты потом все равно ставишь ??
Roman Vasiliev
Взять, если есть что брать
Пашка
тк если нету он же выполнит ??
Nikita Domnitskii
Если b null у тебя ошибка будет так-то
Nikita Domnitskii
Если без ?
Roman Vasiliev
Допустим мы хотим крутую лошадь, у нас есть знакомый цыган и мы знаем что лошадей у него уйма. Но вдруг цыган уходит и нам не откуда брать крутую лошадь, тогда мы берем дефолтную
Roman Vasiliev
Лошадь из воздуха взять нельзя
Пашка
я знаю как работает??
Nikita Domnitskii
[
"Ну если без знака вопроса то ты вызываешь ",
{
"type": "code",
"text": "foo()"
},
" у нулла, соответственно рантайм ерор"
]
Nikita Domnitskii
[
"В ",
{
"type": "code",
"text": "b?.foo()"
},
" ? зануляет весь экспрешн и у тебя правая часть ?? отработает"
]
Пашка
да проверил все верно
Пашка
просто я с свифта пришёл и удобная конструкция была извлечение опционала через guard
Roman Vasiliev
Можно просто на сайте Dart прочитать про язык
Nikita Domnitskii
Пока нет
roman G ??
всем привет, возникла такая проблема есть две верси приложения(1 и 2), на первой проблем не было, но после того как пользователь поставил себе вторую версию приложения, нашли критический баг. пользователь снова откатился на версию 1, перед этим удалив версию 2 но баг от версии 2 остался, хотя раньше при тех же самых условиях на версии 1 все работало идеально, а после установки версии 2 теперь баг воспроиводится на всех версия(на первой соответственно) вопрос: могут ли после установки и удаления версии 2, остаться какие-то кэш файлы?
Anton Zheltov
android если то да
Anton Zheltov
надо кеш чистить, данные удалять
Alexey Perelygin
проблема на версии 2 воспроизводится на каких платформах?
roman G ??
Ну приложение полностью сносили и ставили заново старую версию(первую)
Alexey Perelygin
тогда несвангую, давай описание бага в студию! )
Pavel Vasilenko
Недавно один пользователь жаловался, что когда полностью сносил приложение а потом его ставил заново, то у него оставались некоторые данные из кеша... я ему не поверил
?? Назар Калитюк
Runner.xcodeproj Building for iOS, but the linked and embedded framework 'App.framework' was built for iOS Simulator. как вот это пофиксить чтоб запустить на устройстве?
Anton Zheltov
если данные не чистили , то не полностью
roman G ??
Это в настройках приложения?
Dart Flutter
Text(item[index]['birthday'] + item[index]['position']),
Dart Flutter
как между переменными пробелы воткнуть
Кирилл Матросов
+ ' ' + или через интерполяцию
Dart Flutter
помогло! спасибо
Daniil S
[
{
"type": "link",
"text": "https://www.youtube.com/watch?v=vzWWDO6whIM"
}
]
Nikita Domnitskii
А есть вообще кто-нибудь с флаттер/ангуляр проектами? Как оно вообще?
Andrey P
нормально - при желании - но надо понимать что там версия ангуляр старая
Andrey P
но работать с этим можно
Andrey P
но тольок там не флаттер / ангуляр - а dart / ангуляр
Nikita Domnitskii
Я в плане кодшеринга
Andrey P
там не будет кодшеринга - только то что будет с логикой - то что с визуалкой все разное флаттер и dart/angular - общий только язык и dart классы которые будут чистые
|