Flutter的需要與原生交互的一些常用庫

Flutter的需要與原生交互的一些常用庫

【說明】由于這些庫一直在更新,請自己選擇合適的穩定版本下載。
另外如果發現有問題或者你有更好的庫,歡迎留言告訴我。


谷歌官方的針對Dart語言的一些實用性的功能以及擴展的庫 -- Quiver

Quiver是一組針對Dart的實用程序庫,它使使用許多Dart庫變得更容易、更方便,或者增加了額外的功能。

github地址 https://github.com/google/quiver-dart

使用方式:

dependencies:
  quiver: '>=2.0.0 <3.0.0'

根據pubspec.yaml中設置的目錄模板自動向其中添加文件記錄的腳本 asset_generator

好多人都說Flutter中的資源引用很頭疼,手寫很麻煩,最近找到了一個腳本剛好卡呀解決這個問題。

這個腳本的作用:利用asset_generator腳本生成r.dart 資源文件,方便在代碼中引用資源。

github地址: https://github.com/flutter-dev/asset_generator

使用方式:

1.下載 asset_generator.dart 腳本文件。
2.找到自己Flutter的安裝目錄,將腳本放在Flutter的根目錄下。

:point_right: 另外關于pubspec.yaml文件,它很嚴格,很多人會寫錯,多一個或者少一個空格都會報錯。剛好我找到了一個在線監測工具https://www.bejson.com/validators/yaml/ 把你的yaml文件復制進去 就可以自動幫你找出錯誤了。


常用開源包:

網絡請求

庫名 版本號 鏈接 描述
http 0.11.3+16 https://pub.dartlang.org/packages/http 該軟件包包含一組高級函數和類,可以輕松使用HTTP資源。它與平臺無關,可以在命令行和瀏覽器上使用。
dio 0.0.14 https://pub.dartlang.org/packages/dio Dart的一個強大的Http客戶端,支持攔截器、全局配置、FormData、請求取消、文件下載、超時等。
http_multi_server 2.0.5 https://pub.dartlang.org/packages/http_multi_server dart:io HttpServer包裝器,用于處理來自多個服務器的請求
jaguar_retrofit 2.8.6 https://pub.dartlang.org/packages/jaguar_retrofit Dart版本的Retrofit庫,用于實現一個HTTP客戶端API生成器。(我給它點評:666!思想都是想通的。)

類型編解碼的庫:

庫名 版本號 鏈接 描述
html_unescape 1.0.0 https://pub.dartlang.org/packages/html_unescape 用于解決HTML編碼字符串的Dart庫。支持所有命名字符引用(如&nbsp;),小數字符引用(如&#225;)和十六進制字符引用(如&#xE3;)。
gbk2utf8 https://github.com/jzoom/gbk2utf8 官方的http還不能支持中文gbk的解析,這個項目就是為了解決gbk轉成utf-8編碼的。

序列化

  • 手動序列化:

使用 dart:convert 的內置解碼器。包括傳入 JSON 原始字符串給 JSON.decode() 方法,然后從 Map<String, dynamic> 中查詢你需要的數據。

  • 自動序列化:
庫名 版本號 鏈接 描述
json_serializable 0.5.7 https://pub.dartlang.org/packages/json_serializable
built_value 5.5.1 https://pub.dartlang.org/packages/built_value runtime依賴項
built_value_generator 5.5.1 https://pub.dartlang.org/packages/built_value_generator dev依賴項
built_value_test 5.5.1 https://pub.dartlang.org/packages/built_value_test test依賴項

json解析

庫名 版本號 鏈接 描述
codable 1.0.0-beta.2 https://pub.dartlang.org/packages/codable 用于將動態結構化數據(JSON,YAML)轉換為Dart類型的庫。
方式 大小 (js) 序列化 (dart) 反序列化 (dart) 序列化 (js) 反序列化 (js)
json_serializable 80 KB 9.09 ms 6.61 ms 8.23 ms 8.12 ms
Serializable 79 KB 6.1 ms 6.92 ms 4.37 ms
DSON 94 KB 12.72 ms 11.15 ms 16.64 ms 17.94 ms
Dartson 86 KB 9.61 ms 6.81 ms 8.58 ms 7.01 ms
Manual 86 KB 8.29 ms 5.78 ms 10.7 ms 7.9 ms
Interop 70 KB 61.55 ms 14.96 ms 2.49 ms 2.93 ms
Jaguar_serializer 88 KB 8.57 ms 6.58 ms 10.31 ms 8.59 ms
Jackson (Groovy) 496 ms 252 ms n/a n/a

編解碼、加密解密有關的庫

庫名 版本號 鏈接 描述
ninja 1.0.0 https://pub.dartlang.org/packages/ninja 在Dart的Converter和Codec接口上完善的AES以及RSA加密解密算法的庫。
archive 2.0.0 https://pub.dartlang.org/packages/archive 為各種存檔和壓縮格式提供編碼器和解碼器,如zip,tar,bzip2,gzip和zlib。(不知道移動端能否用得到,文檔說服務端和web端可以用。)

系統平臺有關的庫:

庫名 版本號 鏈接 描述
分享(官方的庫)
share 0.5.2 https://pub.dartlang.org/packages/share 用于通過平臺共享UI共享內容,使用Android上的ACTION_SEND意圖和iOS上的UIActivityViewController。
獲取本地文件
path_provider 0.4.1 https://pub.dartlang.org/packages/path_provider 用于獲取Android和iOS文件系統上的常用位置,例如temp和app數據目錄。
讀寫sp文件
shared_preferences 0.4.2 https://pub.dartlang.org/packages/shared_preferences 用于讀寫簡單鍵值對的Flutter插件。包裝iOS上的NSUserDefaults和Android上的SharedPreferences。
網絡狀態有關
connectivity 0.3.1 https://pub.dartlang.org/packages/connectivity 用于發現Android和iOS上的網絡狀態(WiFi和移動/蜂窩)連接。
設備信息
device_info 0.2.1 https://pub.dartlang.org/packages/device_info 提供有關設備(品牌,型號等)的詳細信息,以及應用程序正在運行的Android或iOS版本。
藍牙
flutter_blue 0.3.3 https://pub.dartlang.org/packages/flutter_blue 這是跨平臺的藍牙sdk.
flutter_ble_lib 1.0.0 https://pub.dartlang.org/packages/flutter_ble_lib 這是一個支持藍牙連接的flutter庫。它里面使用RxAndroidBle和RxBluetoothKit作為本地庫。

國際化和本地化:

庫名 版本號 鏈接 描述
intl 0.15.6 https://pub.dartlang.org/packages/intl 這個包提供國際化和本地化功能,包括消息翻譯、復數和性別、日期/數字格式和解析以及雙向文本。

圖片加載和緩存

使用Image.network,或者使用下面這個庫:

庫名 版本號 鏈接 描述
cached_network_image 0.4.1+1 https://pub.dartlang.org/packages/cached_network_image Flutter庫來加載和緩存網絡圖像。也可以與占位符和錯誤小部件一起使用。

數據存儲、緩存有關的庫

庫名 版本號 鏈接 描述
sqflite sqflite0.10.0 https://pub.dartlang.org/packages/sqflite SQLite的Flutter插件,一個自包含的高可靠性嵌入式SQL數據庫引擎。
file_cache 0.0.1 https://pub.dartlang.org/packages/file_cache 為flutter package項目緩存Json,Buffer,FileCacheImage。

UI庫:

庫名 版本號 鏈接 描述
font_awesome_flutter 7.0.0 https://pub.dartlang.org/packages/font_awesome_flutter 圖標字體的一個庫
fluttertoast 2.0.3 https://pub.dartlang.org/packages/fluttertoast 用于Android和ios的toast庫。
image_picker 0.4.5 https://pub.dartlang.org/packages/image_picker 用于從Android和iOS圖像庫中選擇圖像,并使用相機拍攝新照片。
camera 0.2.9+1 https://pub.dartlang.org/packages/camera 谷歌官方的相機庫。用于在Android和iOS上獲取有關和控制相機的信息。支持預覽相機饋送和捕捉圖像,可以用來視頻錄制,新增對拍照的方向的處理。

圖標有關的開源庫 ↓

庫名 版本號 鏈接 描述
cupertino_icons 0.1.2 https://pub.dartlang.org/packages/cupertino_icons Cupertino的圖標組件庫
flutter_launcher_icons 0.6.0 https://pub.dartlang.org/packages/flutter_launcher_icons 或者github地址https://github.com/fluttercommunity/flutter_launcher_icons 一個命令行工具,簡化了更新Flutter應用程序啟動圖標的任務。 完全靈活,您可以選擇要更新啟動圖標的平臺,如果需要,可以選擇保留舊的啟動圖標,以防將來某個時候還原舊圖標。

富文本 ↓

庫名 版本號 鏈接 描述
flutter_html_view 0.5.2 https://pub.dartlang.org/packages/flutter_html_view Flutter沒有默認的支持來顯示html,所以需要三方的包來顯示。這個包可以將html呈現給原生的Widget。(目前支持的標簽比較少)
flutter_html_textview 0.2.6 https://pub.dartlang.org/packages/flutter_html_textview 將html呈現為一個Widget,在textview中呈現html。

MarkDown ↓

庫名 版本號 鏈接 描述
flutter_markdown 0.1.3 https://github.com/flutter/flutter_markdown 官方的MarkDown庫,它支持原始MarkDown格式,但沒有內聯Html格式。
markdown 2.0.0 https://pub.dartlang.org/packages/markdown 用Dart編寫的便攜式Markdown庫。它可以在客戶端和服務器上將Markdown解析為HTML。
html2md 0.1.7 https://pub.dartlang.org/packages/html2md 將html轉換為Dart中的MarkDown.

動畫 ↓

庫名 版本號 鏈接 描述
flutter_villains 1.0.1 https://pub.dartlang.org/packages/flutter_villains 頁面切換動畫的一個庫,簡化動畫操作,你只需要管理好UI就可以了。

針對Android和ios平臺的UI適配庫 ↓

庫名 版本號 鏈接 描述
platform_aware 0.4.0 https://pub.dartlang.org/packages/platform_aware 為自動適應當前平臺而包裝的Flutter組件,不需要對iOS和Android進行代碼更改。所有小部件都依賴于Theme.of(context).platform來確定當前活動平臺的平臺。你可以使用Flutter Inspector動態地更改平臺。
native_widgets 0.0.3 https://pub.dartlang.org/packages/native_widgets 為避免重復代碼,只編寫一次代碼就可以支持兩個平臺并自動根據平臺自動使用對應風格組件,Android將使用材料設計,iOS將使用Cupertino風格的小部件。

日歷庫(主要是用于顯示和操作日歷)

庫名 版本號 鏈接 描述
flutter_calendar 0.0.4 https://pub.dartlang.org/packages/flutter_calendar 適用于Flutter的日歷小組件。
calendarro 0.0.1 https://pub.dartlang.org/packages/calendarro Flutter的日歷組件庫。 這個庫提供了多種自定義組件的方法。

日期,時間,日期時間,icon,自定義數據的選擇器(很全面) ↓

庫名 版本號 鏈接 描述
flutter_picker 0.0.3 https://pub.dartlang.org/packages/flutter_picker 一個日期,時間,日期時間,icon,自定義數據的選擇器,可以居中彈窗,也可以在底部彈出。(目前來看是最全面的一個選擇器控件。該插件支持ios和android平臺,使用的是ios的風格的UI效果。)

圖片選擇的庫 ↓

庫名 版本號 鏈接 描述
image_picker 0.4.5 https://pub.dartlang.org/packages/image_picker 適用于iOS和Android的Flutter插件,用于從圖像庫中拾取圖像,并使用相機拍攝新照片。(功能正在完善中)
flutter_multiple_image_picker 0.0.1 https://pub.dartlang.org/packages/flutter_multiple_image_picker 一個新的Flutter插件,用于從圖庫中選擇多個圖像。

聯系人選擇的庫 ↓

庫名 版本號 鏈接 描述
contact_picker 0.0.2 https://pub.dartlang.org/packages/contact_picker 使用此插件,Flutter應用程序可以地址簿中選擇聯系人,并將聯系人信息返回給應用程序,并且不需要用戶的任何特殊權限。目前該插件僅支持選擇電話號碼。

顏色選擇的庫 ↓

庫名 版本號 鏈接 描述
flutter_color_picker 0.0.1 https://pub.dartlang.org/packages/flutter_color_picker 一個簡單的顏色選擇器,類似于安卓的selector的功能,可以在點擊控件時,給控件設置選擇器效果。
material_color_picker 0.0.1 https://pub.dartlang.org/packages/material_color_picker(這個是舊版本) 這個是Flutter的顏色選擇器,基于Google Docs顏色選擇器。這個用于選擇顏色,你想用哪一個顏色,可以彈窗自由選擇。
material_pickers 0.0.2 https://pub.dartlang.org/packages/material_pickers(這個是新版本) 這個是Flutter的顏色選擇器,基于Google Docs顏色選擇器。這個用于選擇顏色,你想用哪一個顏色,可以彈窗自由選擇。
flutter_colorpicker 0.0.5 https://pub.dartlang.org/packages/flutter_colorpicker 這是一個HSV的顏色選擇器

輪播圖有關的庫(以及Tab PagerView有關的庫) ↓

庫名 版本號 鏈接 描述
flutter_swiper 1.0.4 https://pub.dartlang.org/packages/flutter_swiper 對應的github地址https://github.com/best-flutter/flutter_swiper Flutter最強大的siwiper, 多種布局方式,無限輪播,Android和IOS雙端適配.
infinity_page_view 1.0.0 https://pub.dartlang.org/packages/infinity_page_view Flutter無限頁面視圖。
carousel 0.1.0 https://pub.dartlang.org/packages/carousel 一個簡單的輪播組件(待完善)。
page_transformer 0.0.1 https://pub.dartlang.org/packages/page_transformer 用于在Flutter中創建漂亮的PageView視差效果的示例項目。

導航欄有關的庫(庫) ↓

庫名 版本號 鏈接 描述
navigation_bar 0.0.1 https://pub.dartlang.org/packages/navigation_bar 一個簡易的底部導航欄。

列表有關的庫 ↓

庫名 版本號 鏈接 描述
flutter_pagewise 0.2.0 https://pub.dartlang.org/packages/flutter_pagewise 一次加載一頁(或批處理)內容(也稱為延遲加載)
lazy_load_scrollview 0.0.2 https://pub.dartlang.org/packages/lazy_load_scrollview ScrollView的包裝器,可以啟用延遲加載,當到達頁面底部時將觸發回調。

路由:

庫名 版本號 鏈接 描述
fluro 1.3.1 https://pub.dartlang.org/packages/fluro 最好用的路由導航框架。功能:簡單的路線導航;函數處理程序(映射到函數而不是路徑);通配符參數匹配;查詢字符串參數解析;內置常用轉換;簡單的定制轉換創建。

消息傳遞通信有關:

庫名 版本號 鏈接 描述
flutter_local_notifications 0.3.0 https://pub.dartlang.org/packages/flutter_local_notifications 一個跨平臺的顯示本地notifications的插件。
local_notifications 0.0.6 https://pub.dartlang.org/packages/local_notifications 這個庫能讓你在Android和iOS上創建Notifications很簡單。
url_launcher 3.0.2 https://pub.dartlang.org/packages/url_launcher 用于在Android和iOS上啟動URL。支持網絡,電話,短信和電子郵件方案。
firebase_messaging 1.0.2 https://pub.dartlang.org/packages/firebase_messaging 一款跨平臺的消息傳遞解決方案,可讓您在Android和iOS上可靠地傳遞消息。
event_bus 0.4.1 https://pub.dartlang.org/packages/event_bus 一個使用Dart流進行解耦應用程序的簡單事件總線的庫。

視頻 & 音頻:

庫名 版本號 鏈接 描述
video_player 0.6.5 https://pub.dartlang.org/packages/video_player Flutter官方的視頻庫(也可以用于直播),用于在Android和iOS上與其他Flutter窗口小部件一起顯示內嵌視頻。支持主流直播流。該庫底層使用的ExoPlayer播放器。更多關于ExoPlayer播放器支持的視頻格式資料請看官方文檔ExoPlayer播放器支持的視頻格式
video_launcher 0.3.0 https://pub.dartlang.org/packages/video_launcher 視頻播放器
flute_music_player 0.0.6 https://pub.dartlang.org/packages/flute_music_player 基于Flutter的材料設計音樂播放器與音頻插件播放本地音樂文件.
audioplayer 0.5.0 https://pub.dartlang.org/packages/audioplayer 一個播放遠程或本地音頻文件Flutter音頻插件
audioplayers 0.5.2 https://pub.dartlang.org/packages/audioplayers 這是rxlabz的audioplayer的一個分支,不同之處在于它支持同時播放多個音頻并顯示音量控制。

rx系列:

庫名 版本號 鏈接 描述
rxdart 0.17.0 https://pub.dartlang.org/packages/rxdart RxDart是一種基于ReactiveX的谷歌Dart反應性函數編程庫。谷歌Dart自帶了一個非常不錯的流API;RxDart沒有嘗試提供這個API的替代方案,而是在它上面添加了一些功能。
rx_widgets 1.0.3 https://pub.dartlang.org/packages/rx_widgets rx_widgets是一個包含基于流的Flutter Widgets和Widget幫助程序/便利類的程序包,它們有助于反應式編程風格,特別是與RxDart和RxCommands結合使用。
rx_command 2.0.0 https://pub.dartlang.org/packages/rx_command RxCommand是針對事件處理程序的基于Reactive Extensions(Rx)的抽象。它基于ReactiveUI框架的ReactiveCommand。它大量使用了RxDart包。

三方sdk有關的:

由于開發中會用到一些三方的sdk,但是國內的sdk目前還沒有支持Flutter,我在pub上面收集了一些相關的三方庫,也不知道效果如何,待檢驗,歡迎各位試用給出反饋。

地圖(地圖顯示、定位、經緯度等)

庫名 版本號 鏈接 描述
map_view 0.0.12 https://pub.dartlang.org/packages/map_view 一個用于在iOS和Android上顯示谷歌地圖的Flutter插件
flutter_map 0.0.10 https://pub.dartlang.org/packages/flutter_map 基于leaflet的Flutter地圖包
location 1.3.4 https://pub.dartlang.org/packages/location 這個插件 處理Android和iOS上的位置。它還提供位置更改時的回調。
latlong 0.5.3 https://pub.dartlang.org/packages/latlong LatLong是一個計算通用的緯度和經度的輕量級庫。

二維碼

庫名 版本號 鏈接 描述
qr_flutter 1.1.5 https://pub.dartlang.org/packages/qr_flutter QR.Flutter是一個Flutter庫,基于QR-Dart,可通過Widget或自定義Paint進行簡單快速的QR碼渲染??膳渲玫妮敵龃笮 ⑻畛洹⒈尘昂颓熬邦伾???梢詫С鰣D像數據。不需要Internet連接。
barcode_scan 0.0.8 https://pub.dartlang.org/packages/barcode_scan 用于掃描2D條形碼和QRCodes的Flutter插件。
qrcode_reader 0.4.4 https://pub.dartlang.org/packages/qrcode_reader 使用相機讀取二維碼的Flutter插件。

WebView

庫名 版本號 鏈接 描述
flutter_webview_plugin 0.1.6 https://pub.dartlang.org/packages/flutter_webview_plugin 允許Flutter與原生Webview進行通信的插件。

圖表庫

庫名 版本號 鏈接 描述
charts-common 0.3.0 https://pub.dartlang.org/packages/charts_flutter Material Design風格的圖表庫
charts-flutter 0.3.0 https://pub.dartlang.org/packages/charts_common 通用的圖表庫組件
flutter_circular_chart 0.0.3 https://pub.dartlang.org/packages/flutter_circular_chart 一個讓你使用flutter輕松創建的動畫圓形圖控件的庫。

權限庫

庫名 版本號 鏈接 描述
simple_permissions 0.1.5 https://pub.dartlang.org/packages/simple_permissions 用于android和ios的請求權限的庫
flutter_simple_permissions 0.0.1 https://pub.dartlang.org/packages/flutter_simple_permissions 權限申請的庫

統計

庫名 版本號 鏈接 描述
flutter_umeng_analytics 0.0.1 https://pub.dartlang.org/packages/flutter_umeng_analytics 這個庫集成了友盟統計sdk(網友寫的,并非官方的。)
- - - 極光針對Android和iOS各自都有SDK,只是目前極光還沒有把統計集成到Flutter里。

分享和登陸

庫名 版本號 鏈接 描述
sharesdk 1.0.9 https://pub.dartlang.org/packages/sharesdk ShareSDK官方推出的功能的Flutter插件,用于分享、登陸等社交功能。
share 0.5.1 https://pub.dartlang.org/packages/share 支持分享的flutter插件
flutter_qq 0.0.1 https://pub.dartlang.org/packages/flutter_qq 這個庫集成了QQ登錄、QQ分享、QQ空間分享。
flutter_wechat 0.1.2 https://pub.dartlang.org/packages/flutter_wechat 這個庫集成了微信,支持微信登錄、分享、支付。
- - - 極光針對Android和iOS各自都有SDK,只是目前極光還沒有把分享和登陸集成到Flutter里。
- - - 目前友盟的U-Share社會化分享還沒有推出Flutter版本的插件庫。

推送

庫名 版本號 鏈接 描述
jpush-flutter-plugin 0.0.11 https://github.com/jpush/jpush-flutter-plugin 極光推送官方的插件庫
- - - 目前Mob的推送還沒有推出Flutter版本的插件庫。(Mob針對Android和iOS各自都有推送的SDK,只是目前Mob還沒有把推送集成到Flutter里面)。
- - - 目前友盟的U-push推送還沒有推出Flutter版本的插件庫。

IM(即時通訊等使用場景)

庫名 版本號 鏈接 描述
jmessage-flutter-plugin 0.0.15 https://github.com/jpush/jmessage-flutter-plugin 極光官方推出的IM聊天、社交功能的插件。

RTC(音視頻會議通話等使用場景)

庫名 版本號 鏈接 描述
- - - 1.目前極光的JMRTC還沒有推出Flutter版本的插件庫。(極光針對Android和iOS各自都有SDK,只是目前極光還沒有把JMRTC集成到Flutter里面)。
Agora-Flutter-Quickstart - https://github.com/AgoraIO-Community/Agora-Flutter-Quickstart 聲網官方集成的RTC SDK示例

視頻播放(本地視頻、網上視頻、或者rtmp源格式)

https://github.com/hyz1992/my_aliplayer 集成了阿里云播放器,可以用來播放視頻,也可以播放rtmp格式。


支付

庫名 版本號 鏈接 描述
目前的做法是:自己去把支付寶和微信分別集成。
flutter_alipay 0.1.0 https://pub.dartlang.org/packages/flutter_alipay 這個庫繼承了支付寶,兼容android和ios

SMS(短信驗證碼)

庫名 版本號 鏈接 描述
mobsms 1.0.0 https://pub.dartlang.org/packages/mobsms
- - - 極光針對Android和iOS各自都有SDK,只是目前極光還沒有把短信驗證碼集成到Flutter里。

一個好玩的庫:

庫名 版本號 鏈接 描述
pwa 0.1.10 https://pub.dartlang.org/packages/pwa 基于Dart的PWA應用程序的庫
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容