Bạn không phải lúc nào cũng cần proxy Node/Go để gọi LLM từ Flutter. Firebase AI Logic ( firebase_ai ) cung cấp client typed cho Gemini, sẵn Auth, App Check và quota. Vì sao team chọn Gọi multimodal phía client (ảnh → log dinh dưỡng có cấu trúc) không phải dựng infra. Server Prompt Templates giữ system prompt và tool definition ngoài binary. Cùng project Firebase bạn đã dùng cho Crashlytics/Auth. Dáng client tối thiểu import 'package:firebase_ai/firebase_ai.dart' ; final model = FirebaseAI . googleAI (). generativeModel (model : 'gemini-2.5-flash' ); final response = await model. generateContent ([ Content . text ( 'Mô tả screenshot UI này cho bug report.' ), Content . data ( 'image/png' , pngBytes), ]); print (response.text); (API surface thay đổi theo version — ghim package và đọc docs hiện tại.) Checklist bảo mật Bật App Check. Yêu cầu Auth cho model đắt. Server template cho prompt chứa business rule. Client không g...
Tỉ lệ không-sập 99,8% nghe rất đẹp cho tới khi bạn nhận ra nó chỉ đếm những cú sập mà công cụ báo cáo của bạn được nối để nhìn thấy. Trong Flutter, một lỗi có thể thoát ra qua bốn cánh cửa khác nhau, và phần lớn ứng dụng chỉ canh một hoặc hai. Bốn cánh cửa Cánh cửa Bắt được gì Bỏ sót gì nếu không nối FlutterError.onError Lỗi bên trong framework: build, layout, paint, callback cử chỉ Màn hình đỏ, lỗi bố cục âm thầm PlatformDispatcher.instance.onError Lỗi bất đồng bộ chưa bắt ở zone gốc Phần lớn lỗi Future Isolate.current.addErrorListener Lỗi trong các isolate bạn sinh ra Mọi lỗi tính toán chạy nền Bộ xử lý sập native Sập ở tầng nền tảng, mã native của plugin Bất cứ thứ gì giết tiến trình Đây là cả bốn, nối một lần lúc khởi động: Future < void > main () async { WidgetsFlutterBinding . ensureInitialized (); await Firebase . initializeApp (); final crashlytics = FirebaseCrashlytics .instance; // 1. Lỗi của framework. FlutterError...