通過(guò)以下命令解決

十載的中山網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷(xiāo)型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整中山建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“中山網(wǎng)站設(shè)計(jì)”,“中山網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
執(zhí)行完畢后,F(xiàn)lutter module將會(huì)創(chuàng)建在ios項(xiàng)目/my_flutter目錄下
將Flutter模塊嵌入到現(xiàn)有iOS應(yīng)用程序中有兩種方式:
此方法需要所有的相關(guān)開(kāi)發(fā)的人員安裝 Flutter 環(huán)境。
需要在my_flutter文件夾下執(zhí)行一下
把.ios和.android等f(wàn)lutter配置生成出來(lái)。
AppDelegate.h:
AppDelegate.m:
控制器:
flutter:
注冊(cè)路由
通過(guò)全局FlutterEngine實(shí)例化FlutterViewController,并setInitialRoute設(shè)置初始化路由,這里發(fā)現(xiàn)設(shè)置的初始化路由路由并不管用
控制器:
設(shè)置FlutterViewController的pushRoute
這里其實(shí)只是讓flutter方面push一次
新建一個(gè)FlutterViewController并把setInitialRoute設(shè)置為跳轉(zhuǎn)的路由,不通過(guò)全局的FlutterEngine創(chuàng)建
放一個(gè)之前自己學(xué)習(xí)時(shí)寫(xiě)的demo,希望可以幫助新入門(mén)的老鐵們,有好的建議可以提一下,我們一起進(jìn)步,奧利給!!!
在Material的設(shè)計(jì)準(zhǔn)則里面,tabs是一個(gè)常用的模塊。Flutter里面包含了 material library 創(chuàng)建tab布局的簡(jiǎn)便方法
為了使tab起作用,我們需要保持選中的tab和相關(guān)內(nèi)容同步。這就是 TabController 的職責(zé)。
我們可以手動(dòng)創(chuàng)建 TabController ,也可以使用 DefaultTabController 小部件。使用 DefaultTabController 是最簡(jiǎn)單的選項(xiàng),因?yàn)樗鼘槲覀儎?chuàng)建一個(gè) TabController ,并使它可用于所有子類(lèi)Widget。
現(xiàn)在我們已經(jīng)有個(gè)一個(gè) TabController ,我們可以 TabBar Widget去使用創(chuàng)建我們的tab。在這個(gè)示例中,我們將會(huì)在一個(gè) AppBar 下.創(chuàng)建一個(gè)包含3個(gè) Tab Widgets 的 TabBar 。
默認(rèn)情況下, TabBar 在Widget樹(shù)中查找最近的 DefaultTabController 。如果是手動(dòng)創(chuàng)建的 TabController ,則需要將其傳遞到“TabBar”。
既然我們有了選項(xiàng)卡,那么我們就需要在選擇選項(xiàng)卡時(shí)顯示相關(guān)的內(nèi)容。因此,我們將使用 TabBarView Widget.
備注: 順序很重要,必須與 TabBar 中的選項(xiàng)卡的順序相對(duì)應(yīng)!
1. Flutter初步探索(二)使用Tabs
1. Working with Tabs
項(xiàng)目環(huán)境是flutter開(kāi)發(fā)的,然而阿里云官網(wǎng)并沒(méi)有flutter相關(guān)的SDK,所以選擇了集成的插件,這里踩過(guò)的坑不多敘述,開(kāi)始正題。
阿里云號(hào)碼認(rèn)證文檔:
pubspec.yaml
1、需要按照阿里云文檔,對(duì)andriod進(jìn)行相關(guān)配置(ios應(yīng)該也要)
2、注意包名、簽名、密鑰的一致性。
3、重點(diǎn):修改源碼,直接搜索setLoggerEnable,括號(hào)里參數(shù)都改為true!!!
至此,可以正常喚起一鍵登錄頁(yè)面。
相對(duì)于iOS開(kāi)發(fā),F(xiàn)lutter的布局更具有靈活性,每個(gè)頁(yè)面設(shè)計(jì)都不一樣,相同頁(yè)面可選擇的布局方式也不一樣,如果單純的說(shuō)應(yīng)該如何去布局,我覺(jué)得不現(xiàn)實(shí),大家可以參考下 Flutter官方的布局教程 。接下來(lái),筆者,通過(guò)項(xiàng)目中的一個(gè)頁(yè)面,來(lái)一步一步的拆解布局的流程。整個(gè)過(guò)程,基本上按照拆解、組件封裝、具體布局這三步來(lái)的。
根據(jù)設(shè)計(jì)圖,可以看出整體可以分成兩部分,上面一部分是系統(tǒng)介紹模塊,下面一部分是真正的登錄內(nèi)容,因?yàn)樯婕暗蒋B加,因此考慮用Stack;
系統(tǒng)介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個(gè)contanier,無(wú)須指定位置,全視圖擴(kuò)展;載放logo圖標(biāo)在上一層,用Image。最后兩個(gè)Text同級(jí)放在最上層。Image,Text各用Positioned包裹去指定位置。
登錄內(nèi)容模塊是最外層是一個(gè)Contanier容器,去控制背景色和圓角。然后是一個(gè)Column元素,逐行排列。
第一行為Image,
第二行為T(mén)ext,
第三行可以看成一個(gè)小Column,分兩塊進(jìn)行布局
第四行可以看成一個(gè)小Column,分兩塊進(jìn)行布局
第五行可以看作一個(gè)TextButton,
第六行可以看作一個(gè)Row,分三塊進(jìn)行布局
通過(guò)上面這樣一步一步的分析后,基本上對(duì)大致的布局有了一個(gè)了解,最外層的控件大致選對(duì)(只要能實(shí)現(xiàn)的話(huà),就是復(fù)雜度以及效率的問(wèn)題),然后一步一步的拆解每一行的元素,如果有重復(fù)的或者覺(jué)得可以封裝出來(lái)的部分,則進(jìn)行下一步。
每一行的拆解,大致也是按照這個(gè)思路來(lái)進(jìn)行,因此筆者在這里就不做講解了。
在做到第三第四行的時(shí)候,發(fā)現(xiàn)這兩個(gè)很相似,而且設(shè)計(jì)到一些交互邏輯,筆者就想對(duì)第三第四行的這種展示進(jìn)行封裝,覺(jué)得今后的布局可能會(huì)用到,因此在這一步,可以先把這一塊兒抽離出一個(gè)控件。利用TextField來(lái)實(shí)現(xiàn)這種輸入操作,具體的實(shí)現(xiàn)筆者不再詳細(xì)的描述了。
經(jīng)過(guò)這一步,整體的規(guī)劃設(shè)計(jì)圖已經(jīng)有了,各個(gè)組件也都有了,接下來(lái)的工作就是組裝了。
具體布局設(shè)計(jì)到一些細(xì)節(jié)的地方,例如整體Column的居中對(duì)齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點(diǎn)擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。
像第六行row是放在底部的,就可以在第六行前面增加一個(gè)Spacer()去填充空白區(qū)域。
對(duì)文字顏色大小等,可以用TextStyle直接設(shè)置。
對(duì)于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。
如果我們目前的項(xiàng)目是Android的,但是接下來(lái)我們希望部分頁(yè)面可以使用Flutter進(jìn)行開(kāi)發(fā),甚至我們希望在Native頁(yè)面中嵌入FlutterUI組件,那么我們?cè)撊绾螌?shí)現(xiàn)呢?
假設(shè)你現(xiàn)在Android項(xiàng)目的目錄的結(jié)構(gòu)是這樣的
這時(shí)候如果你想創(chuàng)建一個(gè)Flutter模塊,使得Android模塊和Flutter模塊之間可以進(jìn)行交互,我們可以通過(guò)Android Studio新建一個(gè)Flutter Module,具體過(guò)程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為
也就是說(shuō),最終你的項(xiàng)目結(jié)構(gòu)會(huì)是這樣的
接下來(lái)在Android Module的 build.gradle 文件中添加flutter依賴(lài)
先創(chuàng)建一個(gè)Flutter頁(yè)面
這里比較重要的是 window.defaultRouteName 這個(gè)字段,這個(gè)字段可以接收從Native傳遞過(guò)來(lái)的參數(shù) (下文我們會(huì)介紹原生傳遞參數(shù)的方法),也就是說(shuō)通過(guò)這個(gè)字段我們就可以進(jìn)行Flutter頁(yè)面的路由的分發(fā)
我們可以直接在Android的 MainActivity 中啟動(dòng)一個(gè) FlutterActivity ,這里的 initialRoute 方法中傳遞的參數(shù)就對(duì)應(yīng)Flutter層的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注冊(cè) FlutterActivity
自己創(chuàng)建一個(gè) FlutterAppActivity 繼承自 FlutterActivity
在 MainActivity 中啟動(dòng) FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊(cè) FlutterAppActivity )
兩種啟動(dòng)方式的區(qū)別
如果單純只是想打開(kāi)一個(gè)Flutter頁(yè)面,兩種方式實(shí)際上基本沒(méi)有太大區(qū)別,第一種方式也許還會(huì)更簡(jiǎn)單一點(diǎn)。但是,在Flutter開(kāi)發(fā)中,我們往往還需要開(kāi)發(fā)一些Native插件供Flutter調(diào)用,如果使用復(fù)寫(xiě) FlutterActivity 的方式更有利于我們?cè)?FlutterActivity 中注冊(cè)我們的Native插件,所以實(shí)際開(kāi)發(fā)中一般推薦使用第二種方式
擴(kuò)展思考
initialRoute 從名稱(chēng)上看起來(lái)是Flutter提供給我們進(jìn)行Native與Flutter交互的路由跳轉(zhuǎn)的,但是實(shí)際上他就是一個(gè)字符串,我們不僅僅可以傳遞一個(gè)路由名稱(chēng),有時(shí)候我們也可以通過(guò)這個(gè)參數(shù)傳遞一串JSON數(shù)據(jù),然后在Flutter端進(jìn)行解析,這樣我們就可以通過(guò)這個(gè)參數(shù)做更多的事情
activity_main.xml
FrameLayout 用于承載Flutter組件
MainActivity.java
使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中
運(yùn)行結(jié)果
上半部分是原生的TextView,下半部分是Flutter的Text組件
本節(jié)主要介紹了Native和Flutter之間的頁(yè)面跳轉(zhuǎn),以及同一個(gè)頁(yè)面中Native與Flutter組件的組合。接下來(lái)會(huì)介紹如何編寫(xiě)Android插件與Flutter進(jìn)行數(shù)據(jù)交互
為了提升用戶(hù)體驗(yàn),使用三方登錄APP的功能怎么能少呢,但是蘋(píng)果的AppStore有一個(gè)很變態(tài)的要求,接入其他三方登錄的話(huà),要求必須也要接入蘋(píng)果登錄。面對(duì)這么變態(tài)的要求,作為一個(gè)有實(shí)力的碼農(nóng)怎么能拒絕呢!
下面為大家介紹一個(gè)好用的Flutter插件 Sign in With Apple ,可以幫助我們快速的接入蘋(píng)果賬號(hào)功能,插件的英文文檔講的比較詳細(xì)了,英文好的同學(xué)可以直接參閱英文文檔集成。
在項(xiàng)目的 pubspec.yaml 文件中添加sign_in_with_apple插件的依賴(lài),如果您使用的Flutter SDK 1.x版本請(qǐng)?zhí)砑右蕾?lài)版本 2.5.4 :
如果您使用的Flutter SDK為2.x,請(qǐng)使用最新版本,當(dāng)前最新版本 3.0.0
使用XCode打開(kāi)項(xiàng)目后,按照以下圖片上的步驟添加 Sign in With Apple Capabilities:
成功添加 Sign in With Apple能力后,可以在下面的列表中就代表添加成功了,如下圖:
分享標(biāo)題:flutter登錄模塊,Flutter web
標(biāo)題來(lái)源:http://chinadenli.net/article25/dsgpeci.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、軟件開(kāi)發(fā)、小程序開(kāi)發(fā)、外貿(mào)建站、響應(yīng)式網(wǎng)站、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)