MaterialApp 是我們app開發中常用的符合MaterialApp Design設計理念的入口Widget。MaterialApp這個組件里面的參數比較多,而且一般在應用入口會用到,所以這里把它內部的所有參數都列出來了
創新互聯建站是一家集網站建設,木蘭企業網站建設,木蘭品牌網站建設,網站定制,木蘭網站建設報價,網絡營銷,網絡優化,木蘭網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。
基本用法:
可以看到我們在 App 的最外層直接使用了 MaterialApp ,可以指定App的名稱( title ),App的主題樣式( theme ),首頁的組件( home ),路由跳轉配置)( routes ),關于路由跳轉我們在后面的章節中會介紹
Scaffold 實現了基本的 Material Design 布局結構, Scaffold 在英文中的解釋為角手架,我們可以理解為樓體中的鋼架結構,通過它可以構建一個頁面
在Flutter應用開發中,我們可以將 Scaffold 理解為一個布局的容器。可以在這個容器中繪制我們的用戶界面
下面是 MaterialApp + Scaffold 的組合的基本用法
AppBar 就是頂部的導航欄組件,支持自定義標題,左右兩側的工具欄按鈕等
BottomNavigationBar 是底部的菜單欄組件
使用方法:
一般我們會定義一個全局變量如 _currentIndex 用于記錄當前選中的下標。然后在 onTap 屬性的回調方法中調用
setState(() { _currentIndex = index;}); 更新 _currentIndex 就可以實現底部菜單的切換。 BottomNavigationBar 一般會配合 BottomNavigationBarItem 一起使用(如下所示)
RefreshIndicator 是Flutter中的下拉刷新組件,一般配合 ListView 組件一起使用
Image 就類似于android中的 ImageView ,可以自定義圖片顯示的寬高
從網絡中加載圖片
從本地(File文件)加載圖片
從本地資源加載圖片
可以將byte數組加載成圖片
TextField 就類似于android的 EditText
PageView 就類似于android中的 ViewPager
場景:多個組件共用一個狀態,子組件通過方法改變父組件狀態
思路:狀態和管理方法定義在父組件,通過構造函數傳遞給子組件
其他子組件按照同樣方法接收即可共用該父組件的狀態。
背景:flutter組件嵌套都很深,依次傳遞數據很麻煩,所以最好是能夠跨組件傳遞。有三張跨組件的方式:InheritedWidget、Notification、Eventbus.
是一種自上而下的傳遞數據的方式。
使用步驟:
它的數據流動方式和InheritedWidget剛好相反,從子控件向上面傳遞。
具體使用
跟android 原生的eventbus原理和使用一樣。
ListTile 通常用于在 Flutter 中填充 ListView。在這篇文章中,我將用可視化的例子來說明所有的參數。
title 參數可以接受任何小部件,但通常是文本小部件
副標題是標題下面較小的文本
使文本更小,并將所有內容打包在一起
將圖像或圖標添加到列表的開頭。這通常是一個圖標。
設置拖尾將在列表的末尾放置一個圖像。這對于指示主-細節布局特別有用。
設置內容邊距,默認是 16,但我們在這里設置為 0
如果選中列表的 item 項,那么文本和圖標的顏色將成為主題的主顏色。
ListTile 可以檢測用戶的點擊和長按事件,onTap 為單擊,onLongPress 為長按。對于波紋效果是內置的
通過將 enable 設置為 false,來禁止點擊事件
靜態方法 divideTiles 可以在 titles 之間添加分隔符,這個顏色有點淡,需要看仔細點才能看出來,哈哈哈哈
TextFormField繼承自FormField,是flutter表單提交相關組件,類似于html中的 input type="text" / ,是個文本輸入框。需要在 Form 組件內部使用,否則無法正確提交數據。
未完待續
如果我們目前的項目是Android的,但是接下來我們希望部分頁面可以使用Flutter進行開發,甚至我們希望在Native頁面中嵌入FlutterUI組件,那么我們該如何實現呢?
假設你現在Android項目的目錄的結構是這樣的
這時候如果你想創建一個Flutter模塊,使得Android模塊和Flutter模塊之間可以進行交互,我們可以通過Android Studio新建一個Flutter Module,具體過程是:File — New — New Module ,之后選擇Flutter Module,指定Project Location的路徑為
也就是說,最終你的項目結構會是這樣的
接下來在Android Module的 build.gradle 文件中添加flutter依賴
先創建一個Flutter頁面
這里比較重要的是 window.defaultRouteName 這個字段,這個字段可以接收從Native傳遞過來的參數 (下文我們會介紹原生傳遞參數的方法),也就是說通過這個字段我們就可以進行Flutter頁面的路由的分發
我們可以直接在Android的 MainActivity 中啟動一個 FlutterActivity ,這里的 initialRoute 方法中傳遞的參數就對應Flutter層的 window.defaultRouteName
注意:需要在 AndroidManifest.xml 注冊 FlutterActivity
自己創建一個 FlutterAppActivity 繼承自 FlutterActivity
在 MainActivity 中啟動 FlutterAppActivity (另外別忘了在 AndroidManifest.xml 中注冊 FlutterAppActivity )
兩種啟動方式的區別
如果單純只是想打開一個Flutter頁面,兩種方式實際上基本沒有太大區別,第一種方式也許還會更簡單一點。但是,在Flutter開發中,我們往往還需要開發一些Native插件供Flutter調用,如果使用復寫 FlutterActivity 的方式更有利于我們在 FlutterActivity 中注冊我們的Native插件,所以實際開發中一般推薦使用第二種方式
擴展思考
initialRoute 從名稱上看起來是Flutter提供給我們進行Native與Flutter交互的路由跳轉的,但是實際上他就是一個字符串,我們不僅僅可以傳遞一個路由名稱,有時候我們也可以通過這個參數傳遞一串JSON數據,然后在Flutter端進行解析,這樣我們就可以通過這個參數做更多的事情
activity_main.xml
FrameLayout 用于承載Flutter組件
MainActivity.java
使用 FragmentManager 將 FlutterFragment 添加到 FrameLayout 容器中
運行結果
上半部分是原生的TextView,下半部分是Flutter的Text組件
本節主要介紹了Native和Flutter之間的頁面跳轉,以及同一個頁面中Native與Flutter組件的組合。接下來會介紹如何編寫Android插件與Flutter進行數據交互
網頁題目:flutter組件接受,flutter 組件通信
轉載來于:http://vcdvsql.cn/article24/dsiigce.html
成都網站建設公司_創新互聯,為您提供用戶體驗、網站導航、關鍵詞優化、微信小程序、網站策劃、品牌網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯