
Flutter开发中google_generative_ai是 Google 官方Dart SDK用于访问Gemini大模型系列服务Flutter直接可以使用封装Gemini API支持文本对话、多模态图文输入、流式输出、Function Calling。简单总结如下:API:1 GenerativeModel:模型实例对象封装某一个 Gemini 模型的全部调用能力。2 generateContent(ListContent contents):非流式一次性完整返回。发送prompt等待模型全部生成完成后返回完整结果。3 generateContentStream(ListContent contents):流式逐块返回。模型每生成一小段token就返回一块数据。4 countTokens(ListContent contents):统计输入内容消耗多少 token。场景1. App内置AI聊天助手客服问答2. AI生成文案、摘要、翻译3. 流式AI回复打字机UI效果栗子:google_generative_ai: ^0.4.0import dart:convert; import package:flutter/material.dart; import package:google_generative_ai/google_generative_ai.dart; import package:http/http.dart as http; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text(Gemini Demo)), body: const GeminiPage(), ), ); } } class GeminiPage extends StatefulWidget { const GeminiPage({super.key}); override StateGeminiPage createState() _GeminiPageState(); } class _GeminiPageState extends StateGeminiPage { String logText ; final String apiKey xxxxkey(自己申请的key); Futurevoid httpListModels() async { setState(() { logText http查询模型列表...; }); try { final uri Uri.parse(https://generativelanguage.googleapis.com/v1beta/models?key$apiKey); final res await http.get(uri); if(res.statusCode 200){ final json jsonDecode(res.body); final List models json[models]; String buf 可用模型:\n; for(final m in models){ List methods m[supportedGenerationMethods]; if(methods.contains(generateContent)){ buf ${m[name]}\n; } } setState(() { logText buf; }); }else{ setState(() { logText http请求失败 status:${res.statusCode} ${res.body}; }); } }catch(e){ setState(() { logText 异常:$e; }); } } Futurevoid callGemini() async { setState(() { logText 请求中...; }); try { final model GenerativeModel( model: gemini-3.6-flash, apiKey: apiKey, requestOptions: const RequestOptions(apiVersion: v1beta), generationConfig: GenerationConfig( temperature:0.7, maxOutputTokens:512 ), ); final resp await model.generateContent([Content.text(简单介绍Flutter)]); setState(() { logText resp.text??无返回; }); } catch (e) { setState(() { logText 调用异常$e; }); } } override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(16), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ ElevatedButton(onPressed: httpListModels, child: const Text(查询可用模型)), ElevatedButton(onPressed: callGemini, child: const Text(调用3.6‑flash)), ], ), const SizedBox(height:20), Expanded(child: SingleChildScrollView(child: Text(logText))) ], ), ); } }注意:1 Android/iOS 需要网络权限国内环境无法直连 Gemini 服务必须合规海外网络否则直接网络报错。2 不要在 isolate 后台隔离区直接调用 SDK网络、证书环境可能异常。