thảo luận Cùng học và chia sẻ tài liệu Flutter

Có bác nào dùng Pusher với host riêng để tạo thông báo đẩy k ạ?

Em dùng như trên https://pusher.com/docs/channels/getting_started/flutter/, nhưng mà plugin không có host, e đã kéo code về để sửa như 1 thanh niên làm trong pull request, nhưng phát hiện ra là plugin này cái authParam lại chỉ có trên Web, mà bên BE bảo phải có token
4gmOAMB.png
4gmOAMB.png
4gmOAMB.png
 
Link đây nhé các thím. Mình đánh giá bộ này cực kỳ đầy đủ, dễ hiểu. Theo mình, thì dùng combo riverpod + gorouter như course này là có thể chiến 90% usercases rồi.
Khi nào kiếm được tiền từ flutter thì ráng mua ủng hộ tác giả nhé các thím.

google drive
pass unzip: vozloser

List video cho các thím tham khảo.
10.10. Working with the Result type (Success and Error).mp4
10.11. Drawbacks of the Result type (and when not to use it).mp4
10.12. Wrap up.mp4
10.1. Section Intro.mp4
10.2. Errors vs exceptions.mp4
10.3. Starter project overview + defining custom exceptions with enums and subclasses.mp4
10.4. Freezed Introduction and Installation.mp4
10.5. Creating an AppException class with Freezed.mp4
10.6. Updating the AsyncValueUI extension to handle AppException values.mp4
10.7. Adding an AsyncErrorLogger using ProviderObserver.mp4
10.8. Creating a reusable ErrorLogger to catch all exceptions.mp4
10.9. Completing the error handling system.mp4
1.10. UI Design Principles Composition & Reusable Widget Classes.mp4
11.10. Updating the LeaveReviewAction by reading read data from the userPurchaseProvider.mp4
11.11. Calculating the average product ratings.mp4
11.12. Updated tests & wrap up.mp4
11.1. Section Intro.mp4
1.11. Useful Widgets for Responsive Design.mp4
1.12. App Localization.mp4
11.2. Starter project overview.mp4
11.3. Overview of the LeaveReviewScreen.mp4
11.4. Implemeting a LeaveReviewController and submitting form data.mp4
11.5. Testing the LeaveReviewForm and preventing an AssertionError.mp4
11.6. Dismissing the LeaveReviewScreen programmatically on success using a callback.mp4
11.7. How to prefill a form with data from a repository backend.mp4
11.8. Optimization only submit the form if the data has changed.mp4
11.9. Showing existing reviews in the ProductReviewsList.mp4
1.1. What you will learn in this course.mp4
12.1. Section Intro.mp4
12.2. Client-side vs server-side search.mp4
12.3. Adding a search method to the FakeProductsRepository.mp4
12.4. Implementing client-side search with StateProvider and FutureProvider.mp4
12.5. Riverpod caching with autoDispose and cacheTime.mp4
12.6. Debouncing and cancelling network requests.mp4
1.2. Section overview.mp4
13.10. Wrap Up.mp4
13.11. Conclusion & Next Steps.mp4
13.1. Introduction to Riverpod 2.x.mp4
13.2. Starter project and updated code walkthrough.mp4
13.3. Installing the Riverpod Generator package.mp4
13.4. Generating providers with the @riverpod syntax.mp4
13.5. Migrating some more providers to Riverpod Generator + the keepAlive syntax.mp4
13.6. Migrating the AccountScreenController from StateNotifier to AsyncNotifier.mp4
13.7. Converting the AccountScreenController to use Riverpod Generator.mp4
13.8. How to check if an AsyncNotifier is mounted.mp4
13.9. How to write unit tests for AsyncNotifier subclasses.mp4
1.3. VSCode Shortcuts, Extensions & Settings for Flutter development.mp4
1.4. Join the Slack Channel.mp4
1.5. Course Project on GitHub.mp4
1.6. Download the Starter Project & pubspec.yaml overview.mp4
1.7. eCommerce app overview.mp4
1.8. Project structure & code walkthrough.mp4
1.9. Exploring the codebase with the Widget Inspector (DevTools).mp4
2.10. Navigating with go vs push.mp4
2.11. Adding the remaining routes.mp4
2.12. How to pop a route with GoRouter.mp4
2.13. Nested Navigation.mp4
2.14. Wrap up + Exercise.mp4
2.1. Section Intro.mp4
2.2. Limitations of Navigator 1.0.mp4
2.3. GoRouter installation & initial setup with MaterialApp.router.mp4
2.4. Routes, sub-routes and navigation.mp4
2.5. GoRouterHelper Extension and pageBuilder.mp4
2.6. Adding some additional routes.mp4
2.7. Routing by path vs routing by name.mp4
2.8. Routing with parameters.mp4
2.9. GoRouter Error Handling.mp4
3.1. Section Intro.mp4
3.2. Popular App Architectures MVC MVP MVVM Clean Architecture Bloc.mp4
3.3. Riverpod App Architecture with the Controller-Service-Repository Pattern.mp4
3.4. Project Structure Feature-first vs Layer-first.mp4
3.5. The Repository Pattern and the Data Layer.mp4
3.6. Implementing the fake products repository as a singleton.mp4
3.7. Working with Future and Stream-based APIs.mp4
3.8. Wrap Up.mp4
4.10. Creating a reusable AsyncValueWidget helper.mp4
4.11. Wrap Up + Exercise.mp4
4.1. Section Intro.mp4
4.2. Introduction to Riverpod.mp4
4.3. Riverpod installation and setup.mp4
4.4. Creating our first provider.mp4
4.5. Reading providers with ConsumerWidget and Consumer.mp4
4.6. Working with FutureProvider, StreamProvider, and AsyncValue.mp4
4.7. Testing AsyncValue by adding a delay.mp4
4.8. The family modifier.mp4
4.9. The autoDispose modifier + advanced data caching options with keepAlive() & Timer.mp4
5.10. Listening to provider state changes with ref.listen().mp4
5.11. Bug-fix for Navigator.pop.mp4
5.12. The AsyncValue.guard method.mp4
5.13. Adding an AsyncValue extension method.mp4
5.14. Using the authStateChangesProvider in HomeAppBar.mp4
5.15. Intro to the email & password sign-in screen.mp4
5.16. How to generate immutable state classes in Dart (EmailPasswordSignInState).mp4
5.17. Using AsyncValue inside EmailPasswordSignInState.mp4
5.18. Implementing the EmailPasswordSignInController.mp4
5.19. Using the EmailPasswordSignInController in the widget class.mp4
5.1. Section intro.mp4
5.20. Bug fix + filtering state updates with select().mp4
5.21. GoRouter redirects.mp4
5.22. GoRouter the refreshListenable argument.mp4
5.23. Fixing the checkout flows after changes to refreshListenable (advanced).mp4
5.24. Wrap Up + Exercise.mp4
5.2. Implementing a fake authentication repository.mp4
5.3. Creating repositories using abstract classes (optional).mp4
5.4. Intro a reactive in-memory store with RxDart.mp4
5.5. Implementing the InMemoryStore with RxDart.mp4
5.6. Using the InMemoryStore in the FakeAuthRepository.mp4
5.7. Accessing the FakeAuthRepository with ref.read() in the AccountScreen.mp4
5.8. Creating our first controller using StateNotifier.mp4
5.9. Using the StateNotifier inside the AccountScreen widget.mp4
6.10. Testing the FakeAuthRepository (part 1).mp4
6.11. Testing the FakeAuthRepository (part 2) + advanced stream matchers.mp4
6.12. Mocks vs Fakes + installing the mocktail package.mp4
6.13. Testing the AccountScreenController (part 1) + AsyncValue subclasses.mp4
6.14. Testing the AccountScreenController (part 2) + working with mocks.mp4
6.15. Testing the AccountScreenController (part 3) + type matchers.mp4
6.16. Testing with Stream Matchers and Predicates.mp4
6.17. Testing lifecycle methods (setUp, tearDown, setUpAll, tearDownAll).mp4
6.18. Testing the EmailPasswordSignInController with Acceptance Criteria.mp4
6.19. Testing the EmailPasswordSignInController (part 2).mp4
6.1. Section Intro.mp4
6.20. Tip setting custom test timeouts per-file.mp4
6.21. Adding a test workflow to automate testing with GitHub Actions.mp4
6.22. Wrap up.mp4
6.2. Introduction to Automated Testing and the Testing Pyramid.mp4
6.3. Getting started with automated testing.mp4
6.4. Writing the first unit test + adding toString() and equality implementations.mp4
6.5. Test matchers and working with methods that throw exceptions.mp4
6.6. Fixing the getProduct() method and updating the unit tests.mp4
6.7. Working with groups and testing Futures and Streams.mp4
6.8. Adding an optional delay to the FakeProductsRepository.mp4
6.9. How to generate a Flutter test coverage report in VSCode.mp4
7.10. Adding the email & password widget tests (part 2).mp4
7.11. Test setup for the authentication flow + using pumpAndSettle().mp4
7.12. Fixing the RenderFlex overflow error.mp4
7.13. Completing the authentication flow test.mp4
7.14. Integration tests.mp4
7.15. Golden image tests.mp4
7.16. Running golden image tests with size variants.mp4
7.17. How to deal with Golden Image tests failing on CI.mp4
7.18. Wrap Up.mp4
7.1. Section Intro.mp4
7.2. Introduction to widget tests + starter project.mp4
7.3. Writing our first widget test using pumpWidget().mp4
7.4. Working with WidgetTester and finder.mp4
7.5. Robot testing.mp4
7.6. How to find widgets by key.mp4
7.7. Writing widget tests with mocks and provider overrides.mp4
7.8. Writing widget tests with Future.delayed() and runAsync().mp4
7.9. Adding the email & password widget tests.mp4
8.10. Writing the unit tests the CartService class.mp4
8.11. Implementing the AddToCartController.mp4
8.12. Updating the AddToCartWidget.mp4
8.13. Bug Fix Adding autoDispose to the AddToCartController.mp4
8.14. Showing the cart items in the ShoppingCartScreen + AutoDispose vs AlwaysAlive error when combining providers.mp4
8.15. Implementing the ShoppingCartItemController.mp4
8.16. Updating the EditOrRemoveItemWidget and ShoppingCartScreen widgets.mp4
8.17. Calculating and showing the cart items count.mp4
8.18. Calculating and showing the cart total price.mp4
8.19. Limiting the available quantity when adding items to the shopping cart.mp4
8.1. Section Intro.mp4
8.20. Implementing the CartSyncService with a listener.mp4
8.21. Registering the CartSyncService with ProviderContainer when the app starts.mp4
8.22. Implementing the logic inside the CartSyncService.mp4
8.23. Implementing the logic inside the CartSyncService (part 2 - optional).mp4
8.24. Unit tests for the CartSyncService.mp4
8.25. Unit-testing providers with dependencies using ProviderContainer.mp4
8.26. Updated widget and integration tests.mp4
8.27. Wrap up + exercise (implement a wish list feature).mp4
8.2. Overview of the shopping cart feature + technical requirements.mp4
8.3. App Architecture for the Shopping Cart Feature.mp4
8.4. Starter project + Overview of the data and domain layers.mp4
8.5. Local Data Persistence with Sembast Initial Setup.mp4
8.6. How to persist the shopping cart data with the SembastCartRepository.mp4
8.7. Implementing the CartService class.mp4
8.8. Updating the CartService class to read dependencies using Ref.mp4
8.9. Writing unit tests using ProviderContainer.mp4
9.1. Section intro.mp4
9.2. Starter project for the checkout flows.mp4
9.3. Updating the CheckoutScreen with the PageController initialization logic.mp4
9.4. Do we need a StateNotifier for the CheckoutScreen.mp4
9.5. Updating the PaymentPage.mp4
9.6. Implementing the PaymentButtonController.mp4
9.7. Wrap Up.mp4
ecommerce_app_section10.zip
ecommerce_app_section11.zip
Có file sub k bro
 
@free2play thím thử check lại khóa Flutter foundations thím share trên Drive. Bài 2.5 GoRouterHelper Extension and pageBuilder bị trùng mà thiếu bài 2.6 Adding some additional routes
 
dart 3 có gì hay không các bác

Em vẫn đang dart 2.9
JfEFzyq.png
Có cái record dùng khá tiện fen, đỡ phải tạo thêm class chỉ để pass data.

Courses updated đây nhé các thím.
Flutter Foundations Course - Complete Package 2023 - updated

Ngoài ra còn khoá animation và The Complete Dart Developer Guide nhưng lười chưa up. Mà cũng không cần thiết lắm.
Fen cho t xin khóa animation được không ạ? Dạo này đang có hứng thú với món này. :big_smile:
 
Mình cũng đang học Flutter. Vẫn thích native hơn mà công ty yêu cầu nên phải học. Nói chung là đáp ứng được việc viết những app cơ bản. App mượt, ít lỗi hơn React Native.
 
Thống kê mới nhất từ Statista thì Flutter dominate thị trường luôn rồi nhỉ, nhanh phết :adore:

https://www.statista.com/statistics/869224/worldwide-software-developer-working-hours/
quan trọng là ở VN thì như thế nào :)))), gì chứ native vẫn ổn hơn, flutter làm giao diện, app nhỏ thôi, công ty lớn vẫn sẽ làm native để đảm bảo hiệu năng, điều đó có ý nghĩa là lương native vẫn sẽ ăn đứt đội flutter , trong khi flutter để làm ngon thì vẫn cần biết native.
 
quan trọng là ở VN thì như thế nào :)))), gì chứ native vẫn ổn hơn, flutter làm giao diện, app nhỏ thôi, công ty lớn vẫn sẽ làm native để đảm bảo hiệu năng, điều đó có ý nghĩa là lương native vẫn sẽ ăn đứt đội flutter , trong khi flutter để làm ngon thì vẫn cần biết native.
Thì cái này là thông kê cross-platform thôi mà fen :adore:
Giờ làm product chắc cứ Flutter thẳng tiến thôi, mới có 6 năm mà dominate luôn chứng tỏ cũng tốt, Google đầu tư nhiều :adore:
 
quan trọng là ở VN thì như thế nào :)))), gì chứ native vẫn ổn hơn, flutter làm giao diện, app nhỏ thôi, công ty lớn vẫn sẽ làm native để đảm bảo hiệu năng, điều đó có ý nghĩa là lương native vẫn sẽ ăn đứt đội flutter , trong khi flutter để làm ngon thì vẫn cần biết native.

Thì cái này là thông kê cross-platform thôi mà fen :adore:
Giờ làm product chắc cứ Flutter thẳng tiến thôi, mới có 6 năm mà dominate luôn chứng tỏ cũng tốt, Google đầu tư nhiều :adore:
Tôi dev Flutter từ lúc mới beta đây,nhận định của tôi thường thì product cho startup giờ họ dùng flutter cho những app không rq nhiều về mặt kỹ thuật dạng như app chụp ảnh có filter hay mấy cái cần chạy nền service mà quăng th Flutter nào là toang đấy :oops:
Về chiều ngược lại thì Flutter nó quá ngon so với những app nặng về mặt UX UI, handle 1 codebase đỡ lỗi hơn nhiều so với 2 team handle 2 hđh khác nhau, nhiều khi còn phải chấp nhận có những điểm khác nhau giữa android với ios :)
 
Tôi dev Flutter từ lúc mới beta đây,nhận định của tôi thường thì product cho startup giờ họ dùng flutter cho những app không rq nhiều về mặt kỹ thuật dạng như app chụp ảnh có filter hay mấy cái cần chạy nền service mà quăng th Flutter nào là toang đấy :oops:
Về chiều ngược lại thì Flutter nó quá ngon so với những app nặng về mặt UX UI, handle 1 codebase đỡ lỗi hơn nhiều so với 2 team handle 2 hđh khác nhau, nhiều khi còn phải chấp nhận có những điểm khác nhau giữa android với ios :)
Bên Flutter có cách nào kết hợp native code vào ko nhỉ fen? Vd như UI thì vẽ bằng Flutter, mấy cái cần xử lý heavy thì đẩy xuống native kiểu như Java + JNA/JNI.
Hay như bên mobile có hướng tiếp cận của Kotlin KMM, build shared logic bằng Kotlin, còn UI thì dùng native SwiftUI/Jetpack Compose :adore:
 
Bên Flutter có cách nào kết hợp native code vào ko nhỉ fen? Vd như UI thì vẽ bằng Flutter, mấy cái cần xử lý heavy thì đẩy xuống native kiểu như Java + JNA/JNI.
Hay như bên mobile có hướng tiếp cận của Kotlin KMM, build shared logic bằng Kotlin, còn UI thì dùng native SwiftUI/Jetpack Compose :adore:

Có chứ fen, ở flutter cái đấy nó gọi là method chanel. Xử lý logic ở native code r đẩy kết quả lên view :)
Th KMM hình như vẫn beta thì phải, chắc phải 204 thì may ra mới có bản chính thức

Gửi từ Your Phone bằng vozFApp
 
Back
Top