Build Your Own Custom Code Generator in Flutter | Flutter Code Generation
Вставка
- Опубліковано 8 вер 2024
- Have you ever heard of packages like Freezer, Retrofit, Riverpod Generator? They're all Code Generator built using Flutter! In this video, we are going to learn to build Code Generators like these packages by building one! This Code Generator generates constructor, fromMap, toMap, copyWith functions for a model class. All we need to do is write it once in our code (sort of like creating a template), run a command and it will generate code for all the classes we have annotated. Don't know what 'annotated' means? Watch this tutorial to know more about it.
This is my personal favourite video made on this channel till now. If you have any questions/constructive criticism about this video, let me know. I'll make sure to help you out/improve on this video.
Discord: / discord
Source Code: github.com/Riv...
Helpful Resources:
More About build.yaml: github.com/dar...
Riverpod Code Generator Code: github.com/rro...
Riverpod Annotation Code: github.com/rro...
Connect With Me Here:
Twitter: / ranawatrivaan
Linkedin: / rivaan-ranawat
GitHub: github.com/riv...
Mail: namanrivaan@gmail.com
Medium: / namanrivaan
Instagram: / optimalcoding
Facebook: / rivaan.ranawat
It was an amazing tutorial and this may seem redundant to most but having this on your CV can give it a huge boost and make you stand out among thousands of CVs. As Rivaan mentioned, there aren't many resources where you can learn this so it's a huge contribution to the Flutter community as well.
My only issue with video is that there is an error in the model class even after running code gen which shouldn't be there and commenting a model class used in codegen is a bad practice. No one is going to remember why they did it after a few weeks. If some GDE or expert can point out the issue and the fix, it would be really helpful and Rivaan can pin it in the comment section.
Thanks Maruf! Yeah, this is an issue. If someone knows how to solve it, do comment. I'll pin it for sure!
Pinning Maruf's comment as of now so that it's easier to see his comment and answer if it's known🙂
what error
@@RivaanRanawat as you only want to build a Json Generator, i think all you need to do is an Extention on Person class and add the toMap and From Map Methods in there ?
Riivan there is no one like you in this world, all your content are pretty valuable
Thank you so much Dabely, appreciate it!
And it is so easy to follow you much better than anyone. My best wishes for you in 2023. Reach millions of suscribers
Every time you drop a new content, I'm eager to watch coz I know it's going to be benefiting ❤
Thank you Sammy! Better content on the way🙂
You have a unique of teaching.
I appreciate your efforts and time for us.
I would request you to provide us a short video on bloc pattern in flutter.
That have main key points of bloc pattern.
Thanks 💌
Sure, Bloc pattern and Bloc state management tutorials coming out soon!!
DAMN!!!!!!!!!!!!!!!! cannut wait to see how far rivan will go in 2023
Haha, thank you!!
Great content, Rivaan! However, I'm curious about handling nested models. For example, if we have a User model that includes multiple other models like Address, how should we approach managing this structure?
Thank you God for sending Rivaan.
Thank you so much Prashant, really appreciate it🙂
great channel and great tut, well done.
Thanks Siddhant! Glad you like it
I just discovered your channel, and I’m literally amused of the knowledge you covered in your videos, i have a question pls, do you have any idea about how the apps gen services (drag and drop) such as flutterflow works behind the scenes.
Super video bro.... Thanks a lot for info !!!🤟
Happy you found it helpful🙂
starting watching this right awwayyyyyyyyy
Let me know if it was well understood! Would love to get some feedback on this!
really your channel is a treasure cave👌👌👌
Honoured you feel that way! More to come🙂
Really great explanation good job man.
Thanks Ismail!
Nice video thanks, although india english is a battle field hahaha, anyway you have a new subscriber
this channel is amazing
Thank you, glad you like them!
Amazing video rivaan
I was able to create simple generator that makes extension for class to create copyWith method without error
But unfortunately it turns out that this code doesn't work with latest plugin update i wasn't able to generate any code untill I've used your pubspec.lock file to lock to your versions 😅
I really appreciate your work if you got any new info please let us know on brief or new video for it will always be treat for eyes 🎉
I solved the same problem by adding graphs: 2.2.0 to the generator's dependency system.
Hey man. I love your vids.
I know your're a busy man but if you can i'd love to see a vid on intergrating flutter with openai or gtp3
Hey Raphael, thanks for the request. I tried to build a little something with the API. The problem is there is no official chatgpt api. The unofficial one is not working because of the constant changes in chatgpt. I've commented on that issue in their package. Once it gets resolved, I'll upload the tutorial I've planned. Till then, stay tuned for something big that's coming in early jan.
@@RivaanRanawat I'm always tuned. You're just the best.
How would I access the generic type of the annotation ex.: @MyAnnotation how do I get the Model classname. And how should I do imports in the generated code? Like how would I import the Model class?
at one point your command line has "flutter pub run build_runner build watch " ... not sure but I think it should be "build" or "watch" ... not both?
At 25 minutes, you could have used `for (final entry in visitor.fields.entries)` and then referenced entry.key and entry.value without needing to reference the original structure. Much easier to avoid an off-by-1 problem as well..
Oh right! I keep forgetting to use the for-in loop, this makes the syntax easier to use. Thanks! Also, if it's possible, can you help us with the issue mentioned in the pinned comment by Maruf? Would be of great help. As always, appreciate you taking the time and watching the vid!
Hi Rivan , thanks for the video , i have one question , how to use it in another app?
Superb bro
Thank you!
thanks, it's realy helpfull
Glad it helped Kalifa!
Alright, now I understand why everybody hates code generation in Dart.
Nice one bro ❤️🙏
Thanks man!
hey tell me is this an ai powered assistant for code generation??
Bro please make a home services app with backend..
Love from Bangladesh 🇧🇩
create a series on awesome notification and local notification
Noted!
Can You make the crowdfunding app in flutter
Without using The blockchain
I'll try to see if I can put this in Beginners Flutter tutorial.
Hi, I did the same steps as you did but my code isn't generating .g files. However the build is successful.
example % flutter pub run build_runner build watch --delete-conflicting-outputs
Deprecated. Use `dart run` instead.
Resolving dependencies...
Got dependencies.
Building package executable... (3.4s)
Built build_runner:build_runner.
[INFO] Generating build script completed, took 163ms
[WARNING] Throwing away cached asset graph because the language version of some package(s) changed. This would most commonly happen when updating dependencies or changing your min sdk constraint.
[INFO] Cleaning up outputs from previous builds. completed, took 2ms
[INFO] Generating build script completed, took 29ms
[WARNING] Invalidated precompiled build script due to missing asset graph.
[INFO] Precompiling build script... completed, took 450ms
[INFO] Building new asset graph completed, took 621ms
[INFO] Checking for unexpected pre-existing outputs. completed, took 0ms
[INFO] Generating SDK summary completed, took 2.3s
[INFO] Running build completed, took 2.5s
[INFO] Caching finalized dependency graph completed, took 28ms
[INFO] Succeeded after 2.5s with 2 outputs (6 actions)
Can you guide me i'm very new to this
I have the exact same issue
I got something similar to this error which I solved by downgrading the flutter sdk to 3.0.0. As build_runner works on flutter 3.0.0 or lower versions