Flutter開發(fā)-FlutterSocket插件

????????Flutter是谷歌推出的跨平臺UI框架,其高效的跨平臺性能已經(jīng)受到很多用戶的認(rèn)可,其所構(gòu)建的"無差別"應(yīng)用主要依賴底層繪制引擎-Skia,Skia Graphics Library是一個由C++編寫的開放源代碼圖形庫,最初由Skia公司開發(fā)畅哑,被Google收購后以New BSD License許可下開源.平常Flutter開發(fā)只需編寫Dart語言代碼,繪制交由Skia去完成.

????????當(dāng)然,Flutter目前還有許多待完善的地方,比如APP或者頁面的生命周期,AOP,線程通信,Flutter生態(tài)等,基本的應(yīng)用開發(fā),Flutter應(yīng)該能夠滿足,當(dāng)然還存在不能解決或者比較難填的坑,這時我們可以構(gòu)建原生平臺插件或者直接調(diào)用原生平臺來輔助解決.

Flutter插件開發(fā)

主要有幾步:

1.構(gòu)建插件項目

1)通過命令:

flutter create --template=plugin -i swift -a kotlin plugin_name

2)或者通過IDE新創(chuàng)建一個plugin工程

2.編寫插件Dart代碼

這里封裝的主要是你想暴露給調(diào)用者的一些API

3.編寫plugin原生代碼

1)編寫iOS端plugin代碼,并且通過建立的methodChannel通道相互傳遞消息

2)編寫Android端plugin代碼,并且通過建立的methodChannel通道相互傳遞消息

????????消息通過除了methodChannel,還可以通過建立其他方式:BasicMessageChannel,EventChannel來建立消息通道.

MethodChannel (圖片來自于網(wǎng)絡(luò))

4.添加依賴

????????這步是可選項,如果你的原生plugin依賴了其他pub,Android需要在build.gradle中添加依賴,iOS需要在plugin_name.podspec中添加依賴.

5.調(diào)試&測試

在發(fā)布到pub.dev倉庫之前,我們自己開發(fā)的插件要進(jìn)行必要的調(diào)試和測試

6.發(fā)布

以上步驟完成之后,就可以通過命令,將你的plugin發(fā)布到pub.dev倉庫了.

1)檢測插件是否有潛在問題:

flutter packages pub publish --dry-run

2)正式發(fā)布

flutter packages pub publish

FlutterSocket

Demo 演示

Demo 演示

????????flutter_socket_plugin是一個實用的跨平臺socket插件,目前已經(jīng)實現(xiàn)client端的基本功能:創(chuàng)建,連接,發(fā)送消息,收消息,斷開連接,心跳等功能.

iOS端

????????iOS端主要封裝的是CocoaAsyncSocket中的GCDAsyncSocket,GCDAsyncSocket是client和server socket的集合,可以創(chuàng)建客戶端和服務(wù)端.源碼在[這里](https://github.com/robbiehanson/CocoaAsyncSocket.

Android端

????????Android端封裝的是OkSocket,這里只集成了其client部分.原項目作者考慮的多了一點(diǎn),把消息包頭也考慮進(jìn)去了,使用的時候查看一下文檔,源碼在這里.

添加依賴

dependencies:
flutter_socket_plugin: 0.0.1

使用示例

import 'package:flutter_socket_plugin/flutter_socket_plugin.dart';

  ///
  /// @Method: initSocket
  /// @Parameter:
  /// @ReturnType:
  /// @Description: init socket
  /// @author: waitwalker
  /// @Date: 2019-08-23
  ///
  initSocket() {

    /// init socket
    flutterSocket = FlutterSocket();

    /// listen connect callback
    flutterSocket.connectListener((data){
      print("connect listener data:$data");
    });

    /// listen error callback
    flutterSocket.errorListener((data){
      print("error listener data:$data");
    });

    /// listen receive callback
    flutterSocket.receiveListener((data){
      print("receive listener data:$data");
      if (data != null) {
        receiveMessage = receiveMessage + "\n" + data;
      }
      setState(() {

      });
    });

    /// listen disconnect callback
    flutterSocket.disconnectListener((data){
      print("disconnect listener data:$data");
    });
  }

示例

創(chuàng)建 socket:

await flutterSocket.createSocket("192.168.8.120", 10007, timeout: 20);

發(fā)起連接 connect :

flutterSocket.tryConnect();

發(fā)送消息 send:

flutterSocket.send(textEditingController.text);

斷開連接 disconnect :

flutterSocket.tryDisconnect();

示例目錄

????????你可以在這里查看FlutterSocket的全部示例.

未來

????????fFlutterSocket目前實現(xiàn)了客戶端基本String消息的收發(fā),未來在條件允許的情況下,逐步完善功能,如果你急需一些功能,你可以在FlutterSocket的基礎(chǔ)上繼續(xù)添加功能,讓FlutterSocket功能更加強(qiáng)大和完善!

博客地址&相關(guān)文章

博客地址: https://waitwalker.cn/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末暮蹂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖音诈,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異答渔,居然都是意外死亡关带,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門沼撕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宋雏,“玉大人,你說我怎么就攤上這事务豺∧プ埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵笼沥,是天一觀的道長蚪燕。 經(jīng)常有香客問我,道長奔浅,這世上最難降的妖魔是什么馆纳? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮汹桦,結(jié)果婚禮上鲁驶,老公的妹妹穿的比我還像新娘。我一直安慰自己舞骆,他們只是感情好钥弯,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著督禽,像睡著了一般脆霎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赂蠢,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天绪穆,我揣著相機(jī)與錄音,去河邊找鬼。 笑死玖院,一個胖子當(dāng)著我的面吹牛菠红,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播难菌,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼试溯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了郊酒?” 一聲冷哼從身側(cè)響起遇绞,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎燎窘,沒想到半個月后摹闽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡褐健,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年付鹿,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚜迅。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡舵匾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出谁不,到底是詐尸還是另有隱情坐梯,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布刹帕,位于F島的核電站吵血,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏偷溺。R本人自食惡果不足惜践瓷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望亡蓉。 院中可真熱鬧晕翠,春花似錦、人聲如沸砍濒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽爸邢。三九已至樊卓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杠河,已是汗流浹背碌尔。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工浇辜, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唾戚。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓柳洋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親叹坦。 傳聞我的和親對象是個殘疾皇子熊镣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容