[Code Factory] [Intermediate] Flutter Real Practice! State Management, Cache Management, Code Generation, GoRouter, Authentication Logic, etc. Essential Skills to Become an Intermediate!
This course will help junior Flutter developers learn the essential knowledge needed to become intermediate Flutter developers in a short period of time.
Want to upgrade to an intermediate Flutter developer? Code Factory's practical lectures you can trust 🖥
A lecture taught directly by the author of Kyobo Bookstore's first half of 2023 best-selling book.
The only app development book ranked in the top 30 in the computer/IT category.
Achieve Super Rookie status in 2022 with just Flutter!
Even large corporations seek out these courses! We guarantee the best lectures, backed by reviews!
🙋♂️ Things to note before taking the class
This course isn't designed simply to create a "delivery app"! It's not a simple clone coding course, so it might not be suitable for those simply looking to learn how to build a delivery app. The delivery app concept is merely a vehicle for the programming knowledge I'm trying to convey. It contains essential knowledge that can be applied to any app, so please refer to it!
This course is significantly more challenging than Code Factory's beginner Flutter course! It contains essential knowledge for practical use, so please take it with the mindset of thoroughly mastering it through repeated repetition. I'm confident that once you fully absorb the material, you'll become a developer ready to start working in the field immediately!
This project provides a NestJS-based REST API server, developed by me, to help you gain hands-on experience with real-world server integration. You'll learn essential knowledge for junior developers by implementing API integrations in a real-world setting, using the Swagger server documentation.
What you'll learn 📚
1) Authentication (authentication logic)
Among the most commonly used Token Authentication systems today, we'll study systems that use Refresh Tokens and Access Tokens for authentication. We'll also learn how to automatically refresh tokens using Dio.
2) Pagination
After learning the theories of Page-based Pagination and Cursor-based Pagination, we will delve deeper into how to efficiently solve Cursor Pagination using OOP.
3) JsonSerializable
JsonSerializable eliminates the need to write code to serialize JSON into objects when creating models. Learn the basics of JsonSerializable and how to apply inheritance in conjunction with pagination.
4) Retrofit
Retrofit is one of Flutter's most useful code generation tools. It automates REST API mapping and works seamlessly with JsonSerializable. All API mapping is done using Retrofit.
5) Riverpod and Cache Management
You'll learn how to use all the providers available in Riverpod and apply them in real-world situations. Additionally, you'll learn how to manage multiple providers simultaneously and optimize cache management.
6) GoRouter
GoRouter,a routing library used in apps and web applications,provides useful features like Dynamic Links, Deep Links, Redirects, and Refresh rules. Let's use this to fully configure an authentication system.
7) Debounce and Throttle
Debounce and Throttle are crucial technologies for managing server overload and optimizing applications. In this lecture, we'll learn about the appropriate use cases and usage methods for Debounce and Throttle.
8) Swagger
Learn how to understand API specifications and translate them into front-end code using Swagger, the most widely used documentation tool for server developers to communicate with front-end developers.
9) Optimistic Response
Optimistic Response is a technique that predicts positive responses and proactively updates the cache. This lecture will teach you how to apply it in specific situations.
Introducing, Project Screen! 🤸♀️
#1 Splash Screen
Set up the authentication/verification logic and routing logic required when running the app for the first time.
#2 Login page
This is the login screen.
#3 Restaurant List Page
This is the home screen that paginates restaurant information. Learn about Pagination and Throttle and apply them in practice.
#4 Restaurant Details Page
You can select the food you want to order from the restaurant's details page, and if you scroll down, you can also see restaurant reviews. You can check it out. Let's apply multiple Sliver Lists in practice using Custom Scroll View.
#5 Shopping Cart Page
This is the shopping cart screen where you can check the food you have selected. Learn and apply the Optimistic Response and Debounce features.
#6 Food List Tab
This is a page where you can view a list of foods. Learn about pagination generalization and advanced cache management features.
#7 Order List Wrap
Let's generalize Pagination into a tab where you can view orders.
#8 Profile tab
This is the profile tab with a logout function.
A word from the lecture 🎙
Since Flutter's release, I've personally worked on numerous projects, both large and small. Recently, during numerous interviews for recruitment and consulting purposes, I've noticed that many front-end developers focus too much on simply creating UIs. While creating a visually appealing UI is certainly one of the most crucial skills for a front-end developer, possessing a solid understanding of computer science, project management, and writing clean code is equally important.
This course will help Flutter developers with limited practical experience learn the considerations they need to consider when writing code to ensure smooth collaboration and maintainability . Unlike the Flutter beginner course, this course focuses on the essential knowledge and best practices for intermediate Flutter developers, centered around a single project. We deliberately introduce pitfalls throughout the project, allowing students to overcome them and experience firsthand how to write better code. The course focuses on developing junior-level Flutter developers to a practical level. We'll apply essential knowledge such as authentication systems, refreshes, access token management, global state management, pagination, debounce, and throttling to real-world projects.
I recommend this to these people 🖐
I've just gotten rid of the Flutter beginner tag. Anyone who wants to level up their knowledge
I know a little bit about Flutter programming. Those who feel overwhelmed when trying to start a project
We've collected course reviews 📜
Best communication 🧑🏼🏫
I connect with students through Q&A sessions on YouTube Live every week!
If you would like to receive YouTube live push notifications, please subscribe to the Code Factory YouTube channel below!
Must Have Code Factory's Flutter Programming book is one I personally wrote after investing a lot of time in it! There are some contents that overlap with the beginner's course, and there are also lectures on Firebase and advertising that are not in the beginner's course! Recommended for those who like eBooks or physical books! The book is available at major bookstores such as Kyobo Bookstore, Yes24, and Aladdin! Please click on the image below to move!
Q&A 💬
Q. Do I have to take the Code Factory Flutter beginner course?
If you already have the knowledge equivalent to Code Factory's Flutter beginner course, you don't need to take any additional courses. However, this course assumes you've already taken the course, so it won't repeat concepts already covered. If you don't have at least the basic knowledge equivalent to Code Factory's Flutter beginner course, this course will be difficult to follow, so please take the beginner course first!
Q. Is this a course on creating a delivery app?
The project we're working on is a delivery app. However, this course has absolutely nothing to do with the UI/UX or functional flow of a delivery app. It merely uses the "concept" as a medium for conveying knowledge, and it focuses on acquiring the general knowledge that junior Flutter developers need to become intermediate Flutter developers. Don't take this course if you're simply looking for "how to build a delivery app"!
Q. What level of developer will I become after taking this course?
In short, I believe this is a practical, immediately applicable level. Based on my extensive experience with various projects and interviews over the years, I've included essential knowledge that I believe Flutter developers should possess.
The images I provide in this lecture are ones I purchased myself. I purchased the rights to create and distribute my works, but you must neverdistribute the images to others or on the internet! Copyright infringement can lead to legal issues, so please do not use these images for any purpose other than your study.
(3) How to ask questions
One of the most effective ways to improve your programming skills quickly is to learn how to ask the right questions. Because of the nature of programming, it's difficult to review entire code snippets. So, if you upload the entire code for a problematic widget and then say, "This doesn't work!", I won't be able to provide an answer. When asking a question, please organize it into the three steps below so that we can communicate and respond much faster!
1️⃣ How do I think it should work? 2️⃣ How it works now 3️⃣ Where exactly is the code and what problems are occurring (if there are even examples👏)
Recommended for these people
Who is this course right for?
Those who are confident that they can repeatedly take and absorb difficult concepts
Anyone who wants to upgrade their flutter development skills
Anyone who has completely absorbed the Code Factory Flutter beginner course
For those who want to experience practical projects
Junior developer without senior engineer in the company
Flutter, cảm ơn vì bài giảng tuyệt vời~
Có nhiều điều tôi thấy hối tiếc khi nghe bài giảng nên tôi đã viết chúng ra rất dài.
Bản tóm tắt -
Đây là một khóa học tuyệt vời để tạo ứng dụng bằng Flutter, nhưng bạn chưa hiểu rõ về Flutter?
-------------------------------------------------- ----
Tổng đánh giá khóa học
Nhìn vào tốc độ bạn viết mã rung, có vẻ như bạn đã làm rất nhiều công việc liên quan, nhưng so với điều đó, có vẻ như khả năng thiết kế dự án tổng thể, kinh nghiệm và kiến thức CNTT của bạn còn thiếu sót. Tất nhiên, tôi nghĩ người tìm việc và sinh viên nghe là đủ, nhưng đối với các nhà phát triển có một số kinh nghiệm, có những phần khái niệm này được giải thích không chính xác và tại sao dự án lại có cấu trúc như thế này? Tôi đã nghĩ về điều này rất nhiều.
Trong lúc nghe giảng, ban đầu tôi viết câu hỏi bằng cách đặt câu hỏi, nhưng tôi cảm thấy bài giảng sẽ không tiến triển nếu cứ viết thế này nên tôi bỏ qua bài giảng, ghi chép riêng. Trước hết những gì tôi viết ra như sau.
- Thiếu giải thích lý thuyết về mã thông báo hoặc phiên trong quá trình giải thích quá trình xác thực -> Tôi để lại điều này như một câu hỏi
- Thiếu giải thích chi tiết về cấu trúc dự án. Tôi muốn biết về những mẫu nào được sử dụng trong Flutter, nhưng không có bất kỳ lời giải thích nào, tôi đã tạo một kho lưu trữ và tạo một nhà cung cấp.
- Định dạng phản hồi của API máy chủ được cung cấp không khớp. Sẽ dễ dàng phát triển nếu mô hình phản hồi giống nhau bất kể có sử dụng phân trang hay không, nhưng những mô hình có phân trang được gói trong dữ liệu và gửi đi, còn những mô hình không phân trang chỉ được gửi đi đơn giản. Điều này rất bất tiện vì không thể. được quản lý phổ biến trên đám mây.
- Khi tạo thiết bị chặn Dio, lời giải thích là bạn có thể làm theo bằng cách nói 'Đó chỉ là một quy tắc~', nhưng lời giải thích tổng thể về phía mạng là không đầy đủ.
- Có đoạn giải thích bị bỏ qua, nói “Nếu bạn biết oop,,,” và có đoạn lại nói dù đó không phải là khái niệm về oop.
- Việc đặt tên không hoàn toàn chính xác. Trường URL hình ảnh tương tự cũng sử dụng hai trường imgUrl và imageUrl được sử dụng làm lạc đà như userModel, nhưng tôi không biết tại sao tên người dùng không được sử dụng làm tên người dùng.
- Càng về sau, số phần lặp lại các từ giống nhau càng tăng lên. Mình nghĩ là do chỉnh sửa video mà có những đoạn lặp lại những từ giống nhau... Xem rất khó chịu.
- Sau chương gorouter chúng ta đột ngột chuyển sang UerMeRepository. Trong bài giảng trước, UserModel không được tạo ra nhưng nó đã được tạo ra. Tôi nghĩ tôi đã bỏ lỡ bài giảng
...
Vì những nội dung trên, thay vì thực sự nghe giảng nên khi mới bắt đầu bài giảng, tôi đã dừng bài giảng và xem bài giảng bằng cách trực tiếp thực hiện và so sánh, thực tế tôi có cảm giác rằng đoạn mã tham khảo tôi nhìn thấy trên github hoặc stackoverflow là chính xác. gọn gàng hơn nhiều và có cấu trúc tốt hơn.(+ Tôi cũng đã mua và đọc cuốn sách mình viết, nhưng tôi có cảm giác như mình chưa từng trải qua một dự án nào từ một công ty lớn.)
Tôi không có xu hướng để lại nhận xét trong khi nghe bài giảng, nhưng tôi nghe mọi người nói những điều như thế này nhiều lần trong các bài giảng đến nỗi tôi phải viết một bài.
"Điều này khác nhau đối với từng dự án, nhóm và cá nhân, vì vậy nó có thể được viết khác với mã này."
"Chúng ta không thể làm như thế này được sao? Nếu bạn nói vậy thì tôi chẳng còn gì để nói”.
Anh ấy nói rất nhiều điều mang tính phòng thủ về việc tắc bóng, v.v., nhưng từ góc độ nghe bài giảng, nó thực sự nghe có vẻ tiêu cực. Nếu tôi có kinh nghiệm với nhiều dự án khác nhau, tôi có thể giải thích rằng có cách này và cách kia trong khi giải thích nhiều ví dụ khác nhau, nhưng tôi không thể làm điều đó, nên có vẻ như tôi đang nói điều này. Tôi nghĩ sẽ tốt hơn nếu bạn không đề cập đến nó.
Ngoài ra, nhiều người nói: “Tôi sẽ kể cho bạn nghe mọi chuyện vì đây là bài giảng được bán lấy tiền”, nhưng lời giải thích lại rất kém. Có vẻ như việc xem mã nội bộ trong khi nghe bài giảng mất nhiều thời gian hơn. Theo ý kiến của tôi, nếu bạn ở trình độ trung cấp, bạn sẽ được giải thích cách mã hoạt động nội bộ, nhưng đó là một bài giảng mà bạn chỉ sử dụng những gì có ở đó mà không biết nó hoạt động nội bộ như thế nào.
Tôi hy vọng rằng trong các bài giảng tiếp theo, các ví dụ về các dự án khác nhau và giải thích về logic bên trong sẽ được bổ sung.
Xin chào! Chúng tôi xin lỗi vì không thể đáp ứng những lo lắng mà bạn cảm thấy. Tôi cũng phản ánh rất nhiều về những đánh giá chân thành về khóa học của bạn! Chúng tôi sẽ cho bạn thấy sự tiến bộ hơn nữa trong tương lai. Cảm ơn các bạn đã chăm chỉ lắng nghe bài giảng. Cảm ơn!
Tôi cũng đang học (mới 10%) và đọc đánh giá này thấy rất đồng cảm.
Khóa học này có vẻ tốt cho người tìm việc.
Thường thì tôi viết đánh giá khi hoàn tất, nhưng tôi cũng như người này, có lẽ chỉ cho khoảng 3 điểm.
Tôi không muốn làm giảm điểm khóa học, nên coi bình luận này là đánh giá luôn.
Đây thực sự là một bài giảng gần như hoàn hảo. Mặc dù tên khóa học là [Trung cấp] nhưng nội dung của khóa học rất chắc chắn đến mức có thể gọi nó là [Trung cấp-Nâng cao] một cách an toàn. Vì hầu hết nội dung đều có thể áp dụng ngay vào thực tế nên có thể nói đây là một khóa học hoàn hảo dành cho các nhà phát triển Flutter đang làm việc cũng như những người đang chuẩn bị đi làm.
Thành thật mà nói, thật lãng phí tiền bạc khi có thể học một khóa học chất lượng như vậy với mức giá này. Không chỉ tôi, người đã phát triển hơn 15 năm, mà bất cứ ai đã làm việc trong lĩnh vực này ít nhất 1-2 năm chắc cũng hiểu ý tôi. Nếu người cung cấp thông tin chi tiết như vậy đang làm việc cho một công ty nào đó, tôi sẽ chân thành khuyên: “Cho dù bạn có đưa toàn bộ tiền lương của mình cho người đó thì cũng chỉ cần học trong một năm thôi”.
Không có sự phát triển nào nhanh hơn việc học hỏi từ một game bắn súng giỏi. Để thực sự phát triển vững chắc với tư cách là một nhà phát triển, bạn chắc chắn cần có thái độ và niềm đam mê của một người học hỏi, nhưng sẽ còn tốt hơn nếu một cựu chiến binh đã đi trên con đường đó hướng dẫn bạn đến lộ trình tối ưu.
Flutter đã gây ồn ào được vài năm nay nhưng vẫn thiếu rất nhiều nhân tài từ cấp trung đến cấp cao. Tôi nghĩ rằng nếu bạn tham gia khóa học này nhiều lần và tự mình nắm vững mọi thứ, bạn sẽ có thể làm việc vui vẻ với những điều kiện thực sự tốt. Kỹ năng của bạn sẽ được cải thiện đến mức bạn có thể dễ dàng xử lý không chỉ các dự án của công ty mà còn cả các ứng dụng bạn muốn tạo.
Để học Flutter, tôi mua hầu hết sách bán ở hiệu sách và cũng học được rất nhiều về clone code trực tuyến. Tôi cũng đã tham gia một bài giảng về một nền tảng khác giải thích từng bước về Flutter. Nhưng đây là điều hữu ích nhất. Đó là thiết thực nhất và tiết kiệm chi phí nhất. Tôi chân thành khuyên bạn nên tìm hiểu điều này trước và lấp đầy những khoảng trống.
Tiếp theo, tôi xin bày tỏ lòng biết ơn chân thành đến người hướng dẫn và tôi mong chờ một bài giảng [nâng cao] khác trong tương lai.
Tôi bắt đầu học Flutter bằng cách nghe bài giảng Flutter trên một trang web khác. Tôi sẽ không đề cập đến trang web hay người hướng dẫn, nhưng bây giờ khi nghĩ lại, tôi chỉ có thể nói rằng trình độ của người hướng dẫn rất thấp.
Tôi đã có rất nhiều phàn nàn khi nghe bài giảng đó. Có cảm giác như tôi chỉ đang luyện tập kỹ năng đánh bóng của mình và câu trả lời cho các câu hỏi của tôi không hay chút nào. Tôi đã tham dự tất cả các bài giảng nhưng điều tôi thu được là kỹ năng đánh bóng tiếng Anh. Nó không hơn, không kém.
Sau đó, tôi tự mình tìm kiếm trên Google, đăng ký dạy kèm 1:1 tại Sum* và thử thực hiện một dự án cá nhân. Nếu bạn nhìn vào đoạn mã bây giờ, nó cẩu thả đến mức vô nghĩa và khó hiểu đến mức bạn tự hỏi tại sao nó lại được viết như thế này. Cuối cùng, tôi chỉ tiêu tiền mà không học đàng hoàng.
Vì tiến độ dự án cá nhân của tôi quá chậm nên tôi bắt đầu tìm kiếm các lớp khác và thứ tôi tìm thấy là lớp của Code Factory. Vào thời điểm đó, tôi đang tranh luận giữa bài giảng của Code Factory và một bài giảng khác (vì có hai bài giảng của Kopack... Tôi hơi lo lắng...hahahaha), nhưng tôi không thể không nghĩ rằng mình thực sự may mắn khi được đã nghe bài giảng của Kopack vào thời điểm đó.
Ngay cả khi tôi đang tham gia một bài giảng về phi tiêu kéo dài 4 giờ hoặc một bài giảng dành cho người mới bắt đầu, tôi vẫn gặp khó khăn khi sử dụng Windows do tốc độ xây dựng hoặc lỗi cài đặt. Ngoài ra, tôi chưa bao giờ chán nản với một bài giảng và chưa bao giờ cảm thấy lo lắng. Hiện tại tôi đang sử dụng MacBook nên nó rất tuyệt haha.
Tôi đã tham gia một bài giảng dành cho người mới bắt đầu như vậy, và thành thật mà nói, có rất nhiều phần tôi không thực sự hiểu nên tôi đã đặt một số câu hỏi và tìm kiếm rất nhiều trên Google để tìm ra cách tiếp tục. Đồng thời, tôi cũng đang thay đổi dự án cá nhân của mình và thực hiện lại nó.
Ngay sau khi tham gia lớp trung cấp, tôi nhận ra rằng kỹ năng của mình đã thực sự tiến bộ sau khi tham gia lớp sơ cấp.
Khi tôi mới tham gia bài giảng dành cho người mới bắt đầu, tôi đã bận rộn sao chép, so sánh, hiểu và làm theo tất cả các mã, nhưng khi tôi thấy rằng tôi đã có thể theo dõi phần đầu của bài giảng trung cấp, các phần cơ bản của việc tạo giao diện người dùng và phần màn hình, chỉ cần nghe giảng mà không nhìn vào màn hình, tôi đã nhận ra rằng mình không biết phải làm gì! Bài giảng dành cho người mới bắt đầu thực sự hiệu quả! (Bây giờ tôi nghĩ về điều đó, Future/Stream Builder là một khái niệm mà tôi không biết, nhưng bây giờ tôi tình cờ đưa nó vào dự án cá nhân của mình.)
Vẫn còn rất nhiều tài liệu và tôi thậm chí còn chưa bắt đầu học những phần khó, nhưng tôi tin chắc rằng nếu tôi tin tưởng và làm theo người hướng dẫn cho các bài giảng trình độ trung cấp, tôi sẽ lên cấp theo một cách mới mà tôi thậm chí còn không biết tôi đang theo đuổi. Mặc dù đây là phần đầu của bài giảng trình độ trung cấp, nhưng tôi sẽ theo sát và không bỏ cuộc cho đến cuối và tôi sẽ trở thành nhà phát triển sinh viên của Kopack, người có thể tự tạo mã sạch!
Bài giảng mà tôi hằng mong chờ cuối cùng cũng đã xuất hiện. Tôi bắt đầu bài giảng ngay khi nó ra mắt, và nội dung rất nhiều thông tin đáng để chờ đợi.
Tôi là một nhà phát triển Android đang làm việc và kể từ cuối năm nay, tôi phải thực hiện liên tiếp một số dự án nhỏ với Flutter, vì vậy tôi đã tham gia các bài giảng về Dart và các bài giảng dành cho người mới bắt đầu sử dụng Flutter cũng như làm việc trên các dự án cá nhân. Tôi đã tham gia các lớp trung cấp Flutter khác vì có một số thứ tôi không thể tự mình làm được, nhưng có quá nhiều thứ khiến tôi thất vọng về cấu trúc và cấp độ của các lớp.
May mắn thay, bài giảng trình độ trung cấp đã được tải lên ngay trước khi tôi bắt đầu dự án nên tôi nhanh chóng nghe nó. Nội dung được tổ chức rất tốt và sự chuẩn bị cho bài giảng cũng rất hoàn hảo. Tôi đang thắc mắc khi nào các bài giảng trình độ trung cấp sẽ được đăng trên bảng tin, và bạn nói rằng sẽ cần thời gian để chuẩn bị kỹ lưỡng hơn, và tôi nghĩ bạn đã chuẩn bị rất tốt, điều đó cũng có lý.
Tôi viết bài này không chút do dự vì lòng biết ơn, nhưng nếu có ai nhìn thấy điều này và lo lắng trước khi tham gia khóa học, hãy nhớ đăng ký ngay!!
Tôi bắt đầu nghe ở trình độ sơ cấp và hiện đang nghe ở trình độ trung cấp.
Tôi đã bối rối khi đột nhiên bắt đầu sử dụng Flutter.
Tôi rất biết ơn vì bạn đã trình bày mọi thứ từ những điều cơ bản, vì vậy tôi không biết phải nói lời cảm ơn như thế nào.!!
Mình cũng sẽ đợi những bài giảng nâng cao><!