![FilledStacks](/img/default-banner.jpg)
- Видео 139
- Просмотров 3 381 596
FilledStacks
Южно-Африканская Республика
Добавлен 1 фев 2019
Build better mobile app UI with expression UI 👉 github.com/FilledStacks/expression-ui
I Believed This LIE About Mobile App UI for Years
Star the repo here 👉 github.com/FilledStacks/expression-ui
Просмотров: 5 172
Видео
My New Way of Building Flutter UI
Просмотров 4,6 тыс.3 месяца назад
I'm building this as an open-source project. Star this repo for future updates 👉 github.com/FilledStacks/expression-ui
Mobile App UI Should be This Easy To Build
Просмотров 3,6 тыс.4 месяца назад
Star the repo 👉 github.com/FilledStacks/expression-ui
Github Hates My App
Просмотров 1,2 тыс.5 месяцев назад
I spent 8 hours trying to do something that should be pretty straightforward. This video if my Flutter Devlog showing you how I ended up in this spot. Sign up for more like this 👉 professionalflutter.carrd.co/
Accepting Permissions in Flutter is Impossible
Просмотров 2,1 тыс.5 месяцев назад
🔥 Bounty Claimed 🔥 Write interesting code and get paid 👉 ticketstacker.carrd.co/
This Bug Crashed My Flutter App For 9 Days
Просмотров 2,6 тыс.5 месяцев назад
Finding bugs is hard. Especially bugs in Flutter that give you no exceptions when they happen. In this video I go over my process of finding a bug that caused a fatal crash for one of my users. This happend on my MacOS Flutter app. It's software to help you write no-code test automation for Flutter apps. Subscribe to my newsletter for deep dives on topics like this 👉 professionalflutter.carrd.co/
The ONLY Reason I Use Flutter
Просмотров 9 тыс.5 месяцев назад
In this video I go over my reason for using Flutter and the other technologies that influenced that decision. Subscribe to my newsletter for deep dives on topics like this 👉 professionalflutter.carrd.co/
Here's The Flutter App I Changed to Pure Dart
Просмотров 1,2 тыс.5 месяцев назад
In this video I connect my Dart CLI application with my Firebase backend and run all of my automated tests. This application is converted from a MacOS Desktop application. I also create the correct logging format for reporting the CLI test run results. 7-day free trial for no-code test automation 👉 [www.testsweets.com](www.testsweets.com/) Timestamps: 00:00 - Intro 00:22 - Recap Yesterday 00:57...
Converting My Desktop App Into A Command Line App
Просмотров 1,8 тыс.5 месяцев назад
In this Flutter devlog I start the process of converting my Flutter test automation software into a command line application. This ensures that my software, TestSweets, can run on a CI pipeline. 7-day free trial for no-code test automation 👉 www.testsweets.com Timestamps: 00:00 - Intro 00:17 - CLI Feature Planning 02:28 - CLI Feature Specs 07:26 - Dart Firebase Authentication Code 09:46 - Pure ...
How to Add TestSweets to Your Flutter App
Просмотров 1,1 тыс.6 месяцев назад
TestSweets is a test automation tool built to turn any manual tester in your team into an automation engineer overnight. Written tutorial: testsweets-docs.web.app/guides/code-integration/ Submit team details to get a free trial of the software 👉 tally.so/r/mD71YR
A New Tool for Production Flutter Teams
Просмотров 2,6 тыс.6 месяцев назад
TestSweets is a no-code test automation tool for Flutter, that turns any tester in your team into an Automation engineer, instantly. Submit your team details to get a 30-day free trial. 👉 tally.so/r/mD71YR Join us on Discord 👉 discord.gg/CQTc3kzy84
Never Write Firebase Functions the Same Again
Просмотров 1,2 тыс.6 месяцев назад
Become a better Flutter full stack developer in 6 minutes a week: professionalflutter.carrd.co/
Automated Testing Types For Every Flutter Developer
Просмотров 3,7 тыс.Год назад
Automated Testing Types For Every Flutter Developer
This is the #1 Threat to Flutter Developers
Просмотров 9 тыс.Год назад
This is the #1 Threat to Flutter Developers
6 Things you can improve RIGHT NOW in Flutter Web
Просмотров 11 тыс.Год назад
6 Things you can improve RIGHT NOW in Flutter Web
Flutter Web Custom URL and Deep Navigation
Просмотров 15 тыс.Год назад
Flutter Web Custom URL and Deep Navigation
Build a Flutter Website in 2023 (Like a Senior Developer)
Просмотров 84 тыс.Год назад
Build a Flutter Website in 2023 (Like a Senior Developer)
4 Ways Dart Beginners Can Go Full Stack in 2023
Просмотров 21 тыс.Год назад
4 Ways Dart Beginners Can Go Full Stack in 2023
The Ultimate Flutter Web Scroll Animations
Просмотров 19 тыс.Год назад
The Ultimate Flutter Web Scroll Animations
Master Scroll Animations in Flutter
Просмотров 27 тыс.2 года назад
Master Scroll Animations in Flutter
Flutter Developers should Know about this
Просмотров 19 тыс.2 года назад
Flutter Developers should Know about this
How to get location based results using Firebase | Part 1
Просмотров 5 тыс.3 года назад
How to get location based results using Firebase | Part 1
How to setup Firebase Emulator in Flutter in 5 minutes
Просмотров 10 тыс.3 года назад
How to setup Firebase Emulator in Flutter in 5 minutes
Ultimate Firebase Emulator Setup for App Development
Просмотров 7 тыс.3 года назад
Ultimate Firebase Emulator Setup for App Development
User Address Management on Firebase
Просмотров 3,1 тыс.3 года назад
User Address Management on Firebase
How I built Address Selection in Flutter
Просмотров 8 тыс.3 года назад
How I built Address Selection in Flutter
Does it support server side rendering?
Use images
I started learning Flutter since 3months just because of Wonderous app. It blew my mind.
Is this used in Wonderous app?. Can this be used in Android?
I don't think they use my package. Yes, this can be used on any platform.
@@FilledStacks No, I meant similar behaviour I have seen there.
00:02 Building TikTok's UI using Flutter 02:09 Refactoring middle and bottom sections into separate widgets 04:19 Creating a row with evenly spaced children and organizing code in a widgets folder 06:26 Creating social actions toolbar with icons and titles 08:43 Adjusting UI and Theme in Flutter 10:54 Organizing constants for easy reference and sharing. 13:16 Implementing UI for TikTok's plus icon and music player action. 15:20 Creating TikTok's UI components in Flutter. 17:30 Setting up containers and centering widgets
Thanks for adding the timestamps.
Hey, Can you please create a video on memory management in flutter? If you don't have much time for creating video can you please create a short even. please.
Hey, I have never had to do memory management in Flutter because it uses a garbage collector so I have no experience in memory management in Flutter.
@@FilledStacks okay, thank you so much for quick response 🙂
Man what about scroll wheel on web? My clients are angry😅
haha. My clients are not angry about it.
@@FilledStacks did u use some workarounds from flutter issue 32120 ?
thanks for your guidance. more power to u
@@saqibamin9942 it's my pleasure to share the information.
How can I make an interactive or dynamic UI with this? I mean can you choose which plan you want to subscribe to in this UI?
Hi, I don't know what you're asking. Could you phrase the question in a different way please.
Would still argue not to use Flutter for web apps, worked at a place where they have Flutter for mobile and web, so one code base. However, the web version lacks so much functionality due to having to support the mobile. Just to get the web app to run takes 1/2 minutes, hot reload hardly works due to its size. IMO, I would either go with NextJS or Angular for frontend and leave Flutter for mobile and that's as far as I would take it.
Makes sense, I've seen some of those experiences as well. I'm currently building a Flutter web app for a client and the hot reload is instant. Plus with WASM in stable the deployed version is also great. I can't tell the difference between Flutter web apps and NextJS ones in well built apps like rive.app and superlist.com . I also know how to make it feel premium, there's a few small things, which I show in a video, but I have like another 10 of those I apply and the apps feel "like a normal web application"
Hey Dane this looks really cool. Amazing work I'm really interested in where this ends up. I just have a few questions: - How can you have animations with that depend on user input like scrolling, swiping, etc... - Can you control animations, like resetting them or moving them forward x amount, etc... - How does this work with different screen sizes? - How does this work with Text? What about translations?
@@migalv_17 Thank you, I appreciate that. 1. Thats handled by the framework, you would build the i individual items then use the framework to add them into a list or a page view. 2. yes you can control them through a StateController that I built in expression UI. still some features missing but it works with my current apps. 3. Different screen sizes works the same as how framer handles it. One artboard per for, factor, mobile, tablet, desktop. Then for responsiveness inside a form factor you can bind your UI to the edges of screens so it sticks the same distance from each side. Video on my twitter profile. 4. You can dynamically change any text by passing in the value using the text property name you gave it in the editor so localization works the same as you currently do it in your codebase.
I couldn’t even get started with frog. I use plain old shelf
haha, frog was such an easy setup for me. Maybe the CLI isn't as great anymore. When I used it I got it setup in seconds the first time I used it.
what if my code if for mobile and web, do i make a seprate branch for mobile and do its navigation differently or use same navigation for both mobile and web.
You use the same approach. This approach works for mobile and web.
@@FilledStacks thank you, great tutorials
Hello man.
🥳
Hi, can you upgrade/recreate this awesome tutorial to newest Flutter 3.22 (WASM) ?
Sure. Run the flutter command with the --wasm flag in your project and you should have it working.
Hey man, good.
Thank you.
Hi . Is there any community of devs using stacked that I can join .....
hey, yes. on the docs site there’s a discord link. stacked.filledstacks.com
Node js 🔥🔥
Node Js would be great if I could write it with dart 😁
Your code is showing blank black screen after site loading. Am using flutter 3.16 environment. Is your meta framework working with latest flutter ?
yes it is. we use it with the latest flutter.
I hardly comment or like any videos on youtube but man you did save my day. Thanks for clean understandable explanation. Subscribed 💯
That's great to hear! I appreciate you leaving the comment.
Why don't you try Figma to code?
I don't want to maintain or write any UI code.
I didn't get you, if we are exporting code from figma then you don't have to write Or maintain ui code right?
@@atishayjain9341 based on the 5 I have tried the code didn’t work as is. Plus, you have to integrate your state and business logic which means you have to modify that code. so you have to update the code to fit into your project and the refactor so it can use shared widgets instead of pure from scratch widgets every time. Code gen is basically just someone else’s coding patterns for UI in your codebase, that you then have to maintain for the rest of time when that UI has to change.
This was super helpful. Question: How do you identify the indices of the item that are currently visible? I want to fire off an event tracker when a particular item is currently visible on the screen on a long list of scrollable items. Is this even possible?
Yes, you can do that. There's a few package that do it. Most of them use a combination of the offset + itemSize + listBounds to manually calculate if the item is available. The offset will tell you when an item is off screen at the scrolling direction end. The itemSize can be used to understand when that item has left the screen. The listBounds can be used to determine when an item has entered the screen visibility. This video is 2 years old so I think there might be additional properties you can explore. Check out the source of some of the "visibilty packages" and see what they do in the latest Flutter.
How does it handle resizing and using tablet vs mobile?
We use the same approach that Framer does. You define an artboard per form factor and it'll select the correct one based on your screen size. .i.e. mobile, tablet, desktop, watch. In addition to that we'll use some contraints in the framework that will keep UI pegged against other UI elements or the edge of the screens.
This will be life saver, amazing work !!! 🥳🥳🥳
Thank you ☺
I have a question when using stacked for forms, is there a way of using global key like the way it is with normal forms?
Hey, you can do that if you want to. All that Stacked does is sync the text value to the viewModel in realtime without adding additional code. This means you can write all business logic that needs to access the text from the form in the viewmodel without using the controller. Making it a pure class that can be unit tested with ease.
so create no code using code?
Kind of. I'd say create better products by not writing code. Delete code often, it's a healthy and required part of app maintenance.
@@FilledStacks I think kinda agree of this, but it like we do 2 times job
Problem with Rive in Flutter is that the app size gets more than 150MB mostly. Users won't like that...
How do you manage app state ?
State I manage using Rive runtime, but I trigger the transitions from my ViewModel. UI code , Business Logic, and Application Logic should be completely separate for testability reasons. Therefore you should be able to replace the UI entirely with something else and keep the rest of the app the same. Which is how this approach works.
@@FilledStacks great 👍
i follow you my mentor
😄
How about getting dynamic lists from api and Forms with multiple types of text fields?
This only replaces your UI, so the rest of your code looks exactly the same. 1. You'll call your backend code 2. You get your data 3. You construct your list 4. You pass your data to your list item created in rive 5. ExpressionUI dynamically updates your text of your list item. TextFields you'll do in code for now. I just design my decoration in rive then add it to the input field.
It's amazing ❤🎉
Thank you. I appreciate that.
This is cool work to be honest! Excited to see what happens, and hopefully can help too :D
I appreciate that Yazeed. I hope you can help too.
I'm really confused about your contents anyway... Where directly are they going to actually.....
I'm confused by this question. Are you asking where my content directs viewers / readers of it?
@@FilledStacks yes my brother.... Once you talk about flutter web, and then about testing, and then about build UI with Figma, then this video....
@@conceptcoder I talk about what I'm doing as a professional developer. What I'm currently doing is what you'll see on the channel.
how can we use this expression-ui framework?
I actually just finished writing the first post about how you can start using it. It's scheduled for release tomorrow. Link at the end of this comment. 1. You create your UI in rive 2. You load your artboard using the expressionUI open source package or rive directly. ExpressionUI is a collection of classes that make it more mobile developer friendly to build on the rive runtime. Sign up here to get tomorrows post: appsplusplus.carrd.co/
Dane, what have you done? ...
haha, I just wanted to have a bit more fun as I'm building my own mobile apps 😁 This is what I ended up with.
I love the idea , thank you for taking the initiative and starting the project. I may become a contributor in near future , because I see myself using it for my next projects .
That would be really awesome, when you're ready reach out and let me know. I have a discord where the contributors discuss implementations and ideas.
How would you manage localisations if the texts are inserted by rive? Also with this approach texts won't resize to the system font size of the users device right?
Good question. tl;dr - Both of those are possible. This is how we do it. You'll see the BaseExpressionView has a textValues property where you can pass in strings. github.com/FilledStacks/expression-ui/blob/73f9fb52910b0e266c28120af3eb248aa7bcb8be/packages/expression-ui-flutter/lib/src/expression_widgets/base_expression_view.dart#L30 The key will reference the name you gave your text in rive and it'll replace that text at runtime. So you can pass in your localisation strings in that way. The same goes for the text style. We can access the style of the Rive Text from code so I'll simply do a copyWith and update the fontSize with a multiplier using the system font size.
@@FilledStacks Oh that's really nice! Do you have any insights on performance? I used rive animation more often already but sometimes when the animation should take the whole screen and especially on older devices or when there is a lot going on in the animation the performance view from flutter dev tools showed many janks and you could also feel that it got kinda laggy
@@tobidozed When was the last time you used it? I haven't seen that behaviour in the app I'm building using rive.
@@FilledStacks Just recently. We wanted to have a fullscreen animation in the background and on top normal ui. I guess all together was too much but maybe it's fine if it's just the animation. It does get worse when the animation is complex like using a skeleton for movements in rive. Also for example in the duolingo app they just introduced a new fullscreen animation when activating an xp booster treasure box and it lags on my phone (iPhone 12). Would be nice to have an example app with your approach and analyse a bit :)
@@tobidozed i see. You can check out the expression-ui example app and navigate through the onboarding. That's full screen rive files in there.
How's load performance? You seem to have all screens in one big Rive file. Does this whole file need to be loaded into memory meaning future screens that are not relevant for the current screen will also be loaded? Or is it possible to have multiple Rive files and load e.g onboarding.rive then main_pages.rive etc? Or is this optimization not needed.
So far there's been 0 lag on any loading, I only have 7 screens, and a bunch of widgets, about 15 artboards in total and it all loads instantly. Yes, the whole file needs to be loaded. You can do multiple files for sections of your UI, especially if it gets big. I like 1 file per app, but like I said, the app is currently tiny. As far as I can tell this optimization is not needed, but if it is then Rive's pre-cache functionality should help a lot with the loading time.
nice🤩
Thank you! Glad you liked it.
Dane, this is incredible. I'm so excited for you and the mobile app community!
Thank you, I appreciate that Tyler. It's a really exciting product to be working on.
Even though I like the idea but I have some concerns regarding responsiveness (not adaptability). For mobile screens how do you handle different width for example? Usually you don't want everything to scale the same.
Good question. We'll use the same approach Framer does. 1 Artboard per form factor. Mobile, tablet, desktop, watch. So you'll add -mobile, -tablet, -desktop at the end of your artboard name and we'll automatically select the correct one based on the current screen size. You can see a working example in this PR demo: github.com/FilledStacks/expression-ui/pull/1
Cool to see you on shorts!
I liked creating these 😁 Didn't have more ideas to share. But I might make more soon.
LOVE IT!!!!
I'm very happy to hear that 🔥
That's wild, I knew Rive was good for UI, but had no idea you could use it this way!
Yeah, it's not been tried yet but it's working really well. And they're working on auto-layout functionality, which will make it even more fitting.
How do you connect business logic to this UI? Bloc, for example?
Good question. UI -> Business Logic -> Application Logic is always completely separated. So you're only replacing your widget code with a single widget for expessionUI. The rest of your app stays exactly the same. That means you can use whatever app management pattern you use, bloc, stacked, provider, riverpod etc. You can pass in data to update the text in an animation through the textValue properties. Everything else stays exactly the same. You'll just be replacing your ui file widget code with expression UI widgets.
@@FilledStacks , yes, that is the general principle. But, you said you want to have a widget without code. So, if you want to show progress indicator when the data is loading, list of widgets when the data is fetched or show snackbar when error is received, for example, how would you do it with this kind of widget you don't want to code? That is my question. :)
@DraskoSaric aaah, I see. I use the Rive state machine for that. All I do in code is call triggers in my viewmodel that goes to a new state. I build all the UI with widget code. Then I bund them together. So I'm saving on 90% of widget code writing, the other 10% is code that binds things together. I'll show more in videos to make it clearer how it works. It's too much to type out here.
Very exciting. Thrilled to hear more about this. It could be a game changer Thx
Much appreciated! Thank you very much for letting me know you're excited about this.
Not sure why RUclips decided to show me this video today, but I’m glad it did. I’m considering transitioning to freelancing/consulting and had no idea how to approach pricing. Great video and thanks for sharing!
RUclips knows what we're thinking 😅 ... jokes aside, I'm happy that you found this video. It's helped me a lot in my freelance career to make better pricing decisions.
We could use installation video steps for building
yes please
It's very new so there's nothing published yet. But you can see the example app to see how it's used.
This looks cool as shit what the hell
I'm happy to hear that! I think it's pretty cool too. Really enjoying working this way.