video_player: primitive video Flutter dựa trên platform video_player đáng chú ý vì nó giải quyết controller, khởi tạo, buffering, subtitle và lifecycle. Bài này trình bày cách đặt package vào đúng boundary của một ứng dụng Flutter production thay vì chỉ copy một snippet vào màn hình. Package này sở hữu phần nào? Giữ API của package ở một adapter hoặc feature boundary có tên rõ ràng. Đưa lifecycle, lỗi và trạng thái loading vào contract mà UI có thể kiểm thử. Chỉ expose capability cần thiết; đừng để toàn app phụ thuộc vào chi tiết triển khai. Snippet bắt đầu final controller = VideoPlayerController . networkUrl ( Uri . parse (url)); await controller. initialize (); controller. play (); return AspectRatio ( aspectRatio : controller.value.aspectRatio, child : VideoPlayer (controller), ); Checklist trước khi ship Đọc README và changelog của package đúng version đang pin. Viết một test cho lifecycle, lỗi và hành vi khi app về background. Kiểm tra Android, iO...
Very Good CLI: scaffolding Flutter có opinion very_good_cli đáng chú ý vì nó giải quyết template project, flavor, mặc định testing và quy ước CI. Bài này trình bày cách đặt package vào đúng boundary của một ứng dụng Flutter production thay vì chỉ copy một snippet vào màn hình. Package này sở hữu phần nào? Giữ API của package ở một adapter hoặc feature boundary có tên rõ ràng. Đưa lifecycle, lỗi và trạng thái loading vào contract mà UI có thể kiểm thử. Chỉ expose capability cần thiết; đừng để toàn app phụ thuộc vào chi tiết triển khai. Snippet bắt đầu dart pub global activate very_good_cli very_good create flutter_app my_app cd my_app very_good packages get very_good test -- coverage Checklist trước khi ship Đọc README và changelog của package đúng version đang pin. Viết một test cho lifecycle, lỗi và hành vi khi app về background. Kiểm tra Android, iOS, web hoặc desktop đúng platform mà app hỗ trợ. Ghi lại owner, upgrade cadence và kế hoạch rollback trong repo. P...