flutter 第六天(使用外部包解析json,和微信分享)

上午第一件事情是使用外部包解析json

image.png

我用的是win 7 專業(yè)版
官方解釋是PowerShell版本太低 但是我這個版本又更新不了這個東東 只能放棄了

但是在官方文檔中還有一個built_value

先講講json序列化的幾種方法

Dart 團隊和社群對 JSON 已進行過諸多討論坎吻,并且能夠提供解決方案解总。我會按照復(fù)雜性從低到高的順序介紹三種解決方案晓铆,分別是手寫構(gòu)造函數(shù)勺良、json_serializable 和 built_value。
使用全部三種方法將數(shù)據(jù)反序列化的調(diào)用非常相似骄噪。手寫構(gòu)造函數(shù)和 json_serializable 的代碼行如下所示:

final myObject = SimpleObject.fromJson(json.decode(aJsonString));

built_value 的反序列化調(diào)用如下所示:

   final myObject = serializers.deserializeWith(  
    SimpleObject.serializer, json.decode(aJsonString)); 

真正的區(qū)別是尚困,在該 “SimpleObject” 類中為您生成多少代碼,以及這些代碼有何作用链蕊。

手寫構(gòu)造函數(shù)

復(fù)雜性最低的方法:不為您生成代碼尾组。
您可以做自己想做的任何事,但您必須進行維護示弓。

json_serializable

為您生成 fromJson 構(gòu)造函數(shù)和 toJson 方法。
在構(gòu)建應(yīng)用之前呵萨,您需要在項目中加入若干個包奏属,并使用 source_gen 生成部分文件。
對所生成的資源進行自定義可能會很棘手

built_value

為序列化潮峦、不可變性囱皿、toString 方法、hashCode 屬性等生成代碼忱嘹。這是具備諸多功能的重量級解決方案嘱腥。
與 json_serializable 一樣,您需要導(dǎo)入許多包并使用 source_gen拘悦。
擁有基于插件的可擴展序列化架構(gòu)齿兔。
對實例創(chuàng)建和可變性等方面有見解。

您適合使用哪個內(nèi)容庫其實取決于項目詳情础米,特別是項目大小和狀態(tài)管理方法分苇。對擁有一位維護者的興趣項目來說,手寫構(gòu)造函數(shù)很有幫助屁桑,而由龐大分布式團隊(他們需要不可變模型來保持邏輯清晰)構(gòu)建的應(yīng)用則會真正從 “built_value” 受益医寿。

看到這里我想我還是用手寫構(gòu)造函數(shù)的方式把 這樣方便維護
今天就到這里 我們明天再見

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`

`
怎么可能 要把這東西搞完啊

我們繼續(xù)

第一種方式很簡單 開發(fā)過Android 或者是iOS都很容易的 第二種網(wǎng)上的教程太多了 而且我自己也沒有搞定 就不說了 重點說第三種

built_value

built_value(及其合作伙伴包 built_collection)遠遠不只是自動序列化邏輯解決方案,其設(shè)計目的是幫助您創(chuàng)建充當值類型的數(shù)據(jù)類蘑斧。為此靖秩,使用 built_value 創(chuàng)建的數(shù)據(jù)類實例是不可變的。您可以創(chuàng)建新實例(包括現(xiàn)有實例的副本)竖瘾,但一旦構(gòu)建好實例沟突,便無法更改其屬性。

為做到這一點准浴,built_value 使用在 json_serializable 中找到的相同源生成方法事扭,但會創(chuàng)建更多代碼。在為 built_value 類所生成的文件中乐横,您會發(fā)現(xiàn):

一個等式 (==) 運算符

一個 hashCode 屬性

一個 toString 方法

一個序列化器類(如果您想要一個)求橄,下文會介紹更多相關(guān)內(nèi)容

一個用于創(chuàng)建新實例的“構(gòu)建器”類

即使是一個很小的小類今野,加起來也有幾百行,所以我不會在此贅述罐农。實際類文件(您作為開發(fā)者編寫的文件)如下所示:

  import 'package:built_collection/built_collection.dart';
  import 'package:built_value/built_value.dart';
  import 'package:built_value/serializer.dart';
  part 'simple_object.g.dart';
  abstract class SimpleObject
          implements Built<SimpleObject, SimpleObjectBuilder> {
      static Serializer<SimpleObject> get serializer =>
               _$SimpleObjectSerializer;
       @nullable
       String get aString;
       @nullable
       int get anInt;
       @nullable
       double get aDouble;
       @nullable
       BuiltList<String> get aListOfStrings;
       @nullable
       BuiltList<int> get aListOfInts;
       @nullable
       BuiltList<double> get aListOfDoubles;
       SimpleObject._();
       factory SimpleObject([updates(SimpleObjectBuilder b)]) =
               _$SimpleObject;
   }

所以還是如果不是寫的很大的項目的花還是建議使用第二種方法
這個文件與我們一開始使用的 SimpleObject 版本的區(qū)別在于:

像 json_serializable 一樣聲明 part 文件条霜。

實行界面 Built<SimpleObject, SimpleObjectBuilder>。

添加了針對序列化器對象的靜態(tài) getter涵亏。

所有字段上都有是否為 Null 的注解宰睡。這些注解是可選項,但為了讓此示例與其他相關(guān)示例匹配气筋,我進行了添加拆内。

添加了兩個構(gòu)造函數(shù)(一個不公開函數(shù),一個工廠函數(shù))宠默,并移除原來的函數(shù)麸恍。

SimpleObject 現(xiàn)在是抽象類了!

這個文件與我們一開始使用的 SimpleObject 版本的區(qū)別在于:

我們先看最后一點:SimpleObject 已變成抽象類搀矫。在所生成的文件中抹沪,built_value 定義了名為 _ SimpleObject。但您永遠不需要按派生類型引用它瓤球,因此您的應(yīng)用代碼仍會使用 SimpleObject 來聲明和使用引用內(nèi)容融欧。

這是有可能實現(xiàn)的,因為您已經(jīng)通過所生成的工廠構(gòu)造函數(shù)完成對全新 SimpleObject 的實例化卦羡。您可以在上方文件的最后一行看到對其的引用噪馏。要開始使用,您需要傳入一個方法虹茶,該方法在 SimpleObjectBuilder(即下方的“b”參數(shù))上設(shè)置屬性逝薪,并為您構(gòu)建不可變對象實例

這里不做過多的贅述 有興趣的小伙伴可以看看 這篇文章

插曲

之前寫的屏幕適配 因為有個九宮格(就一行 三個圖片)出現(xiàn)了問題 在像素點比例不一樣的地方匹配不了 又搞了一些時間
終于搞定了 記錄下

double jian = ScreenUtil.pixelRatio * 34;//臥槽  終于搞定了  思路: 三張圖片  相互的間隔和邊框的間隔的和是 34  按照像素點來計算的話是 ScreenUtil.pixelRatio * 34
double temp = (ScreenUtil.screenWidth - jian) / 3;// 然后使用外部包(因為一直使用的是外部包  所以最好都使用外部包)的屏幕總寬度 減去間隔總和 除以3
double width = temp / ScreenUtil.pixelRatio;//但是這個時候計算出來的是像素的寬度  所以還要除以像素比 才能正確的計算出寬度

分享到第三方

因為我用的是windows電腦 所以先寫Android
微信分享的第一件事情是干啥 請大聲的告訴我!!!!
對的 是在微信平臺上申請應(yīng)用
那么就需要簽名
簽名就需要簽名文件
簽名文件怎么生成呢

keytool -genkey -alias name.keystore -keyalg RSA -validity 36500 -keystore name.keystore

然后查看簽名

keytool -list -v -keystore name.keystore

Android debug和release簽名

好了 我下面來跟大家分享下我是如何集成微信分享的

1.上面說過了 申請APP 生成簽名等等

2.安裝外部包

pubspec.yaml

fluwx: ^0.6.3

有興趣的小伙伴可以去github查看

3.導(dǎo)入包

import 'package:fluwx/fluwx.dart' as fluwx;
import 'package:fluwx/fluwx.dart';

4.注冊

Fluwx.register(appId: "",doOnIOS: true,doOnAndroid: true);
盡管可以通過Fluwx完成微信注冊,但一些操作依然需要在對應(yīng)平臺進行設(shè)置蝴罪,如配置iOS的URLSchema董济,Android上的WXEntryActivity等。

5.分享

 fluwx.share(WeChatShareTextModel(
        text: "text from fluwx",
        transaction: "transaction}",//僅在android上有效要门,下同虏肾。
        scene: WeChatScene.SESSION
    ));
///[WeChatScene.SESSION]會話
    ///[WeChatScene.TIMELINE]朋友圈
    ///[WeChatScene.FAVORITE]收藏
    enum WeChatScene {
      SESSION,
      TIMELINE,
      FAVORITE
      }

分享文本

  fluwx.share(WeChatShareTextModel(
      text: "text from fluwx",
      transaction: "transaction}",//僅在android上有效,下同欢搜。
      scene: scene
    ));

分享圖片

 fluwx.share(WeChatShareImageModel(
        image: _imagePath,
        thumbnail: _thumbnail,
        transaction: _imagePath,
        scene: scene,
        description: "image"));

注意:如果不指定 thumbnail封豪,那么Fluwx將嘗試從image中獲取縮略圖。

分享音樂

  var model = WeChatShareMusicModel(
      title: _title,
      description: _description,
      transaction: "music",
      musicUrl: _musicUrl,
      musicLowBandUrl: _musicLowBandUrl
    );

    fluwx.share(model);

音樂的分享有兩種:musicUrlmusicLowBandUrl炒瘟。這兩種形式是不共存的吹埠,如果 都二者都進行了賦值,那么只會讀取musicUrl

分享視頻

   var model = new WeChatShareVideoModel(
     videoUrl: _videoUrl,
     transaction: "video",
     videoLowBandUrl: _videoLowBandUrl,
     thumbnail: _thumnail,
     description: _description,
     title: _title
   );
   fluwx.share(model);

視頻的分享有兩種:videoUrlvideoLowBandUrl缘琅。這兩種形式是不共存的粘都,如果 都二者都進行了賦值,那么只會讀取videoUrl刷袍。

分享小程序

 var model =new WeChatShareMiniProgramModel(
      webPageUrl: _webPageUrl,
      miniProgramType: fluwx.WXMiniProgramType.RELEASE,
      userName: _userName,
      title: _title,
      description: _description,
      thumbnail: _thumbnail
    );
    fluwx.share(model);

.
.
.

2019-07-03日更

我微信分享得時候 在我手機上顯示的是報名不對 但是在同事手機上顯示的是可以分享的
初步認為 解決方式2 可以解決 因為之前在使用微信分享得時候出現(xiàn)過這種問題

官方給出的幾種問題

    1. 微信是否安裝
    1. 調(diào)用時的Apk包名和簽名是否與開放平臺填寫的一致翩隧,簽名請使用該工具:點擊下載,常發(fā)生在安裝了debug版本又安裝release版本情況呻纹,確定包名簽名后卸載微信重裝或者清除微信數(shù)據(jù)再做測試
    1. 檢查發(fā)送時的縮略圖大小是否超過32k
    1. 能夠調(diào)起微信到選擇好友列表堆生,但是點擊發(fā)送后無響應(yīng),請檢查proguard配置是否對微信SDK代碼進行了混淆雷酪,建議不要對SDK對混淆淑仆,參考以下proguard配置:

.
.
.

2019-07.08日更

分享到網(wǎng)站

 Fluwx.share(Fluwx.WeChatShareWebPageModel(
        webPage: 網(wǎng)頁地址,
        title: 標題,
        description: 描述信息,
        thumbnail: 圖片地址,
        scene:分享到: 朋友圈 會話  收藏
    ));

上一篇------------------------------下一篇

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哥力,隨后出現(xiàn)的幾起案子糯景,更是在濱河造成了極大的恐慌,老刑警劉巖省骂,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異最住,居然都是意外死亡钞澳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門涨缚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來轧粟,“玉大人,你說我怎么就攤上這事脓魏±家鳎” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵茂翔,是天一觀的道長混蔼。 經(jīng)常有香客問我,道長珊燎,這世上最難降的妖魔是什么惭嚣? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮悔政,結(jié)果婚禮上晚吞,老公的妹妹穿的比我還像新娘。我一直安慰自己谋国,他們只是感情好槽地,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般捌蚊。 火紅的嫁衣襯著肌膚如雪集畅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天逢勾,我揣著相機與錄音牡整,去河邊找鬼。 笑死溺拱,一個胖子當著我的面吹牛逃贝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迫摔,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼沐扳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了句占?” 一聲冷哼從身側(cè)響起沪摄,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎纱烘,沒想到半個月后杨拐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡擂啥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年哄陶,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哺壶。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡屋吨,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出山宾,到底是詐尸還是另有隱情至扰,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布资锰,位于F島的核電站敢课,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏绷杜。R本人自食惡果不足惜翎猛,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望接剩。 院中可真熱鬧切厘,春花似錦、人聲如沸懊缺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至遗座,卻和暖如春舀凛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背途蒋。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工猛遍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人号坡。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓懊烤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宽堆。 傳聞我的和親對象是個殘疾皇子腌紧,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

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

  • 概要 64學(xué)時 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,223評論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標準畜隶。 注意:講述HT...
    kismetajun閱讀 27,518評論 1 45
  • JSON的特點: 1壁肋、JSON比XML的數(shù)據(jù)傳遞的有效性高;2籽慢、JSON完全獨立于編程語言浸遗;3、JSON的本質(zhì)是具...
    程序員之路閱讀 3,509評論 0 3
  • 今天有個學(xué)生對我說:自從在落在我手里學(xué)習(xí)箱亿,字都寫得好看多了乙帮。哈哈……其實,辛苦之余极景,還是有點小驕傲的。整個班...
    風(fēng)流醉春光閱讀 106評論 0 0