Google Cloud 提供了數百種 API (應用程式設計介面),讓開發人員能夠存取和整合 Google 的各種服務,從虛擬機器、儲存空間到人工智慧模型都包含在內。
這些 API 通常以 RESTful JSON 和 gRPC 服務的形式提供,您可以透過 Google Cloud 控制台、Cloud SDK (gcloud CLI) 或各種程式語言的用戶端程式庫來存取它們。
您可以在 Google Cloud 控制台的「API 和服務」>「程式庫」中瀏覽和啟用所有可用的 API。
以下是 Google Cloud API 的一些主要類別及範例:
這類 API 讓您能將強大的 AI 和機器學習模型整合到應用程式中。
Vertex AI API: 用於建立、部署和管理自訂機器學習模型的統一平台。
Vision API (視覺 AI): 可用於分析圖片,辨識物體、文字 (OCR)、臉部和不當內容。
Speech-to-Text API (語音轉文字): 將音訊檔案轉換為文字,支援多種語言。
Text-to-Speech API (文字轉語音): 將文字轉換為聽起來自然的語音。
Natural Language API (自然語言 AI): 分析文字以擷取實體、情感、語法等資訊。
Translation API (翻譯 AI): 在數千種語言對之間進行動態翻譯。
用於管理和執行應用程式的基礎架構。
Compute Engine API: 建立和管理 Google 基礎架構上的虛擬機器 (VM)。
Google Kubernetes Engine (GKE) API: 部署、管理和擴展容器化應用程式。
Cloud Run API: 在全代管的無伺服器平台上執行無狀態容器。
Cloud Functions API: 以事件驅動的無伺服器方式執行程式碼。
用於儲存、管理和查詢資料。
Cloud Storage API: 儲存和擷取物件 (例如圖片、影片、備份檔案)。
Cloud SQL API: 管理全代管的 MySQL、PostgreSQL 和 SQL Server 資料庫。
Cloud Spanner API: 用於任務關鍵型應用程式的全球分散式關聯資料庫。
Cloud Bigtable API: 用於大型分析和營運工作負載的高效能 NoSQL 資料庫。
Firestore API: 用於行動和網頁應用程式的彈性、可擴展的 NoSQL 文件資料庫。
用於處理和分析大規模資料集。
BigQuery API: 用於資料倉儲和分析的可擴展、全代管 SQL 資料倉儲。
Cloud Pub/Sub API: 用於事件驅動架構的全域即時訊息服務。
Cloud Dataflow API: 用於批次和串流資料處理的統一服務。
用於設定和管理您的雲端網路。
Virtual Private Cloud (VPC) API: 管理您的虛擬私有雲網路、子網路、防火牆規則等。
Cloud DNS API: 管理 DNS 區域和紀錄的高效能、高可用性網域名稱系統。
Cloud Load Balancing API: 在您的應用程式之間分散流量。
用於監控、記錄和管理您的雲端資源。
Cloud Logging API: 儲存、搜尋、分析和監控日誌資料。
Cloud Monitoring API: 監控雲端應用程式的效能、可用性和健康狀況。
Cloud Deployment Manager API: 透過範本自動建立和管理雲端資源。
Service Usage API: 啟用、停用和管理專案中的 Google Cloud API。
雖然常被視為獨立平台,但它與 Google Cloud 緊密整合,提供地圖、路線和地點相關的 API。
Maps JavaScript API: 在您的網站上嵌入互動式地圖。
Places API: 存取全球數百萬個地點的詳細資訊。
Routes API: 計算兩地之間的路線和預計到達時間。
📱geolocator & url_launcher
Geolocator 地理定位器 (用來取得 GPS 座標的套件)
url_launcher URL 啟動器 (用來打開網址或地圖的套件)
Location Permission 定位權限
Position 位置 (包含經緯度的座標資料)
async / await 非同步 / 等待 (處理需要花時間執行的任務,如GPS定位)
launchUrl 啟動 URL
ScaffoldMessenger 畫面訊息
SnackBar 底部提示訊息
Longitude 經度
Latitude 緯度
mounted 已安裝的
denied 被拒絕
coordinates 座標
Ø 參考資料:
Dart
// 這是你要修改的目標函式 _openMaps()
Future<void> _openMaps() async {
// ...
final lat = pos.latitude; // <-- 原本是讀取手機GPS的緯度
final lon = pos.longitude; // <-- 原本是讀取手機GPS的經度
// ...
}
// 試著建立一個新的函式,直接指定座標!
Future<void> _openKaohsiungSpot() async {
final lat = 22.6220; // 緯度直接設為駁二
final lon = 120.2796; // 經度直接設為駁二
final label = Uri.encodeComponent('駁二藝術特區');
// ... 後面的程式碼可以參考 _openMaps()
}
程式範例:https://gist.github.com/sylviakang/9cd8889daa374c16564b487e41af8d72
📱 What is JSON?
JSON (JavaScript Object Notation)
format(格式)
store / storing(儲存)
transfer / transmit(傳輸)
information(資訊)
structured(結構化的)
convert(轉換)
object(物件)
language(語言)
📜 Why is JSON popular?
popular(受歡迎的)
beginner(初學者)
simple(簡單的)
lightweight(輕量的)
parser(解析器)
process(過程)
fast / faster(快速)
readability(可讀性)
function(函式)
system(系統)
load time(載入時間)
🎨JSON Syntax
key(鍵)
value(值)
comma(逗號)
curly brackets(大括號 { })
square brackets(方括號 [ ])
string(字串)
number(數字)
boolean(布林值:true/false)
null(空值)
array(陣列)
🧩Storing JSON Data
property(屬性)
example(例子)
gender(性別)
hobby(嗜好)
程式範例:https://gist.github.com/sylviakang/9cd8889daa374c16564b487e41af8d72
📱 應用骨架
MaterialApp App 入口、主題設定
Scaffold 提供 AppBar、body、浮動按鈕等基礎版面
AppBar 頁首標題列
IconButton AppBar 右上角搜尋圖示
📜 主要版面與捲動
SingleChildScrollView 整頁可滾動容器
Column 垂直排列所有 section
Row 水平排列 KPI、按鈕或卡片
Expanded / Flexible Row/Column 中自適應分配空間
Padding 外距
SizedBox 固定空白或間距
Align / Center 對齊與置中
Divider 分隔線
🎨 裝飾與容器
Container 設定背景顏色、漸層、圓角
Stack 疊放元件(Hero 橫幅)
Positioned 在 Stack 中定位前景內容
Card 有陰影或圓角的資訊卡
ListTile 卡片/清單的標題、圖示、子標題排版
FlutterLogo 範例圖示
🧩 列表與網格
Wrap 自動換行排列 (Chip)
Chip 顯示關鍵字標籤
GridView.count 圖片格狀排列
ListView.separated 可插入分隔線的清單
ExpansionTile 可收合的 FAQ
🔘 按鈕
FilledButton 實心主要按鈕
OutlinedButton 外框次要按鈕
🖼️ 其他屬性與修飾
BoxDecoration 設定背景顏色、漸層、圓角
LinearGradient 線性漸層
BorderRadius.circular 圓角半徑
Flutter 與路由相關
routing API 路由 API(用於頁面之間的導覽)
navigate between screens 在多個畫面之間導航
URLs 網址 / 路徑
deep linking 深層連結(直接透過網址開啟指定頁面)
go_router Flutter 官方推薦的路由套件 go_router
GoRouter instance GoRouter 實例
list of routes 路由列表
paths 路徑
builder 建構器(回傳要顯示的 Widget)
path parameters 路徑參數
query parameters 查詢參數
web-based routing libraries 網頁式路由函式庫
MaterialApp.router Flutter 原生 MaterialApp.router 建構子
router 路由器
GoRouter.of(context).go 透過 context 呼叫 GoRouter 的 go 方法進行導航
進階路由結構
ShellRoute 外殼路由(可固定外框 UI 並切換子頁面)
UI shell UI 外殼
BottomNavigationBar 底部導覽列
navigation content 導覽內容
Riverpod / Provider 相關
Provider 提供者(最基本的 Provider 類型,提供唯讀狀態)
Provider<GoRouter> 提供 GoRouter 實例的 Provider
ProviderRef Provider 參考物件,用來讀取其他 Provider 或註冊監聽
ProviderScope Provider 作用域(放在 Widget 樹根部的容器,管理所有 Provider 狀態)
ProviderContainer Provider 容器(純 Dart 環境下操作 Provider 的類別)
Override 覆寫設定,用於測試或局部修改 Provider 行為
ProviderObserver Provider 觀察者,用來監控 Provider 的建立、更新、銷毀
Provider.autoDispose 自動銷毀 Provider(沒被監聽時自動清理狀態)
StreamProvider 提供 Stream 的 Provider
StateNotifierProvider 提供 StateNotifier 的 Provider
典型程式元素
global variables 全域變數
immutable variable 不可變數值
shared state 共享狀態
constructor 建構子
callback function 回呼函式
StreamController 資料串流控制器
Location class 範例中的 Location 類別
The Ultimate Flutter Tutorial for Beginners - 2025 Full Course。Flutter Tutorial。
Flutter 基本
Flutter Google開發的跨平台框架
UI framework 使用者介面框架
cross-platform 跨平台
語言與效能
Dart programming language Dart 程式語言
type safety 型別安全
stateful hot reload 有狀態熱重載
native machine code 原生機器碼
graphics engine 圖形引擎
render 渲染
開發流程
install Flutter 安裝 Flutter
flutter create 建立 Flutter 專案
main.dart file main.dart 檔案
source code 原始程式碼
IDE 整合開發環境
command line 命令列
hot reload 熱重載
developer experience 開發者體驗
UI 與 Widget
widget tree 小部件樹
pre-built widgets 預建小部件
animations 動畫
scrolling 滾動
responsive layout 響應式版面配置
StatelessWidget 無狀態小部件
StatefulWidget 有狀態小部件
build method build 方法
child widgets 子小部件
狀態管理
immutable 不可變
internal data 內部資料
properties 屬性
setState 更新狀態
re-render 重新渲染
Sustainable tourism 永續旅遊
Tourism industry 觀光產業
Tourist experience 旅遊體驗
Host regions 旅遊目的地
Environmental responsibility 環境責任
Ecosystem 生態系統
Pollution 污染
Deforestation 森林砍伐
Natural habitats 自然棲地
Environmental degradation 環境惡化
Conservation 保育、保護
Carbon footprint 碳足跡
Sustainable transportation 永續交通
Cultural respect 文化尊重
Traditions and customs 傳統與習俗
Heritage sites 文化遺產地
Authenticity 真實性、原汁原味
Cultural preservation 文化保存
Community-based tourism 社區旅遊(由當地人主導、直接受益)
Economic benefit 經濟利益
Local communities 當地社區
Revenues 收益、收入
Overtourism 過度旅遊
Commercialization 商業化
Lack of awareness 缺乏意識
Cost 成本、花費
Stakeholders 利害關係人(政府、企業、遊客、社區)
Eco-friendly accommodations 環保住宿
Renewable energy 再生能源
Reduce waste 減少浪費
Responsible traveler behavior 負責任的旅遊行為
Single-use plastics 一次性塑膠製品
Local engagement 在地參與
Ecotourism 生態旅遊
Costa Rica 哥斯大黎加(以生態旅遊聞名)
Bhutan 不丹(高價值低影響政策 High value, low impact policy)
🡻 lib
🡻 data
questions.dart
main.dart
quiz.dart
start_screen.dart
questions_screen.dart
quiz_question.dart
answer_button.dart
results_screen.dart
results_screen.dart
Practice: fa01
在quiz.dart管理頁面切換
在questions_screen.dart新增參數傳遞chooseAnswer函數
新增results_screen.dart顯示結果畫面
使用List.of()複製List<>,.shuffle()迭代亂數選項
在quiz_question.dart新增方法
questions_screen.dart新增變數以切換題目
在quiz.dart存放答案並改善錯誤
使用ElevatedButton.styleFrom設計按鈕格式
認識Dart提供的pub.dev套件
使用Google Fonts字體
狀態管理的重要性
什麼是狀態?Widget 的屬性、資料、UI 顯示等。
為什麼需要狀態管理?
應用程式的 UI 需要根據狀態的變化而更新。
複雜的應用程式需要管理大量的狀態。
有效的狀態管理可以提高程式碼的可維護性和可擴展性。
StatefulWidget
StatefulWidget vs StatelessWidget:
StatelessWidget 是靜態的,狀態不可變。
StatefulWidget 是動態的,狀態可以改變。
StatefulWidget 的生命週期:
createState():創建 State 物件。
initState():初始化狀態。
build():構建 Widget。
setState():更新狀態,觸發 build() 重新構建 Widget。
dispose():釋放資源。
Provider
什麼是 Provider?一個強大的狀態管理套件,可以方便地在 Widget 樹中共享狀態。
Provider 的優點:
簡單易用:API 設計簡潔,易於上手。
靈活:支持多種狀態管理模式。
可擴展:可以與其他套件結合使用。
Provider 的基本用法:
ChangeNotifier:用於通知 Widget 狀態變化的類別。
ChangeNotifierProvider:用於在 Widget 樹中提供 ChangeNotifier 物件。
Consumer:用於獲取 Provider 提供的狀態,並根據狀態變化更新 UI。
Demo_01:main.dart
Demo_01:view.dart
Demo_01:view.dart
升級至 Android Studio 2022.1 Electric eel 遇到JAVA_HOME路徑設定問題,先至
C:\Program Files\Android\Android Studio\jre刪除jre資料夾,再用系統管理員打開命令提示字元:
鍵入mklink /d "C:\Program Files\Android\Android Studio\jre" "C:\Program Files\Android\Android Studio\jbr"
完成設定即可
出現紅色error,版本問題,請至
C:\src\flutter\flutter\packages\flutter_tools\gradle路徑下修改flutter.gradle中的compileSdkVersion、minSdkVersion、targetSdkVersion