iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0

一個被鎖在App裡的點子,影響力是有限的,可一旦它被分享給朋友、在群組中引發討論、或是在社群媒體上激起漣漪,它的價值才會成倍增長。這種「口碑傳播」也是任何App最厲害的成長引擎。

今天,將建立的「分享」按鈕,透過Flutter社群中最受歡迎的套件之一share_plus,讓使用者可以輕而易舉的分享到手機上的任何一個角落。

第一步:認識share_plus套件

share_plus是一個Flutter Favorite套件,它的作用單純且好用,其功能是呼叫iOS和Android作業系統原生的分享 UI。

不需要自己去串接WhatsApp、LINE、Messenger、Telegram、Email或其他任何App的API。只需要告訴share_plus你想分享什麼內容,它就會彈出一個系統層級的分享選單,上面列出了使用者手機上所有可以接收分享的App。使用者可以自己選擇要分享到哪裡,這一切都由作業系統為我們處理,體驗既原生又流暢。

第二步:安裝套件

在你的專案根目錄下,執行以下指令:
flutter pub add share_plus

share_plus的一大優點是,對於分享文字和連結這類基礎功能,它通常不需要任何額外的原生平台設定,開箱即用。

第三步:更新資料模型以包含原文連結

根據需求,分享的內容應該包含「靈感摘要」和「原文連結」。但回顧一下我們的Insight模型,似乎還沒有加入原文連結sourceUrl欄位,我們先來補上它。

Step1. 修改insight_model.dart
Step2. 重新產生TypeAdapter

因為我們修改了Hive的模型結構,所以必須重新執行build_runner來更新Adapter檔案:
flutter packages pub run build_runner build --delete-conflicting-outputs

Step3. 更新假資料:

打開lib/features/insight/insight_provider.dart,為我們的假資料加上sourceUrl:

// in InsightNotifier's loadInsights method
state = const [
  Insight(id: '1', summary: '...', tags: ['...'], sourceUrl: 'https://example.com/article1'),
  Insight(id: '2', summary: '...', tags: ['...'], sourceUrl: 'https://example.com/article2'),
  // ...
];

第四步:實作分享邏輯

現在回到主頁,讓分享按鈕啟動。
打開lib/presentation/home_page.dart。我們在Day 11已經建立了按鈕列,現在只需要找到分享按鈕的 onPressed回呼函式並填入邏輯。

註:我們的分享按鈕不在卡片上,而在卡片下方的按鈕列中,讓我們來實作它。

測試分享功能

是時候看看成果了!

  • 在真實手機上執行App(模擬器上可能沒有可以分享的 App)。
  • 點擊我們剛剛啟用的分享按鈕。
  • 見證時刻:系統原生的分享面板會從底部彈出!
  • 選擇一個App,例如 LINE、Messenger 或你的筆記 App。
  • 你會看到我們精心組合的文字內容已經被自動填入,等待你發送。

明日預告:從點擊-通知-直達APP

這個功能將我們的App從一個「個人工具」變成了一個具有「社交潛力」的平台,賦予了使用者成為內容的傳播者,這對App的自然成長相當重要。

現在,朋友收到了你分享的連結,點擊了它,然後......跳轉到了瀏覽器,這個體驗不錯,但如果點擊連結可以直接打開我們的App,甚至跳到對應的那一則靈感內容,那將會是更棒的體驗?明天將進行深層連結 (Deep Linking)的實作,敬請期待:)


【哈囉你好:)感謝你的閱讀!其他我會常出沒的地方:Threads


上一篇
30 天做一個極簡App:workmanager背景抓取
下一篇
30 天做一個極簡App:從點擊通知到 App的Deep Linking
系列文
Mobile Dev|日更靈感來源 App:Flutter × LLM × n8n,每天只推 3 則!19
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言