bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

flutter庫開發,flutter網站開發

Flutter開發--如何布局?

相對于iOS開發,Flutter的布局更具有靈活性,每個頁面設計都不一樣,相同頁面可選擇的布局方式也不一樣,如果單純的說應該如何去布局,我覺得不現實,大家可以參考下 Flutter官方的布局教程 。接下來,筆者,通過項目中的一個頁面,來一步一步的拆解布局的流程。整個過程,基本上按照拆解、組件封裝、具體布局這三步來的。

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:空間域名、虛擬主機、營銷軟件、網站建設、撫寧網站維護、網站推廣。

根據設計圖,可以看出整體可以分成兩部分,上面一部分是系統介紹模塊,下面一部分是真正的登錄內容,因為涉及到疊加,因此考慮用Stack;

系統介紹模塊部分:整體也是涉及到疊加,考慮用Stack,分為四部分。最底部漸變色背景用一個contanier,無須指定位置,全視圖擴展;載放logo圖標在上一層,用Image。最后兩個Text同級放在最上層。Image,Text各用Positioned包裹去指定位置。

登錄內容模塊是最外層是一個Contanier容器,去控制背景色和圓角。然后是一個Column元素,逐行排列。

第一行為Image,

第二行為Text,

第三行可以看成一個小Column,分兩塊進行布局

第四行可以看成一個小Column,分兩塊進行布局

第五行可以看作一個TextButton,

第六行可以看作一個Row,分三塊進行布局

通過上面這樣一步一步的分析后,基本上對大致的布局有了一個了解,最外層的控件大致選對(只要能實現的話,就是復雜度以及效率的問題),然后一步一步的拆解每一行的元素,如果有重復的或者覺得可以封裝出來的部分,則進行下一步。

每一行的拆解,大致也是按照這個思路來進行,因此筆者在這里就不做講解了。

在做到第三第四行的時候,發現這兩個很相似,而且設計到一些交互邏輯,筆者就想對第三第四行的這種展示進行封裝,覺得今后的布局可能會用到,因此在這一步,可以先把這一塊兒抽離出一個控件。利用TextField來實現這種輸入操作,具體的實現筆者不再詳細的描述了。

經過這一步,整體的規劃設計圖已經有了,各個組件也都有了,接下來的工作就是組裝了。

具體布局設計到一些細節的地方,例如整體Column的居中對齊(crossAxisAlignment)、間隔(Padding或Container包裹,筆者更喜歡用SizedBox占位)、居左居右居中(Align)、點擊事件(GestureDetector)以及圓角(BorderRadius)等一些特殊情況。

像第六行row是放在底部的,就可以在第六行前面增加一個Spacer()去填充空白區域。

對文字顏色大小等,可以用TextStyle直接設置。

對于輸入框的刪除按鈕,可以用Offstage這種Flutter特有的控制顯示隱藏的控件。

Flutter開發環境配置(MAC版)

(該路徑會有變化,可以關注Flutter社區,隨時更新)

Documents為目錄,fluttersdk為sdk文件夾

cd 到對應的項目工程中執行命令:

在終端中執行 flutter doctor 查看Android和iOS的開發環境,監測到依賴若有缺失,會給出缺失的依賴的安裝結果,依照提示進行安裝即可。

在命令終端執行相關命令:

打開Android Studio應用,打開菜單項Preferences Plugins中搜索Flutter插件并點擊install進行安裝

打開 VS Code,可點擊 View - Command Palette,搜索flutter并點擊install進行安裝

Flutter發布Package(Pub.dev或私有Pub倉庫)

??因為我們使用Flutter跨平臺技術開發App時,會有很多公用組件,因為Flutter中一切皆為Widget,widget也比較細粒度,所以我們需要進行封裝,用于一個項目或者公司不同項目中去~

??那么今天寫寫如何發布package或者插件到Pub.dev上,扯扯談O(∩_∩)O哈哈~

《Flutter的撥云見日》系列文章如下:

1、Flutter中指定字體(全局或者局部,自有字庫或第三方)

2、Flutter發布Package(Pub.dev或私有Pub倉庫)

首先,我們知道flutter有四種工程模式:Flutter Application、Flutter Module、Flutter Plugin和Flutter Package。

我們這里就主要講Package 純Dart插件的發布吧,都差不多。

創建工程后,就可以編寫你的公共組件,或者公用字體庫呀啥的, 都行。

在更改下你的pubspec.yaml文件,修改下你的versionCode,項目名稱,項目描述,作者等

如果上傳失敗試試????的命令:

在執行該命令時,可能會中途調到網頁,要求你登錄google賬號,登錄授權,到時候登錄賬號并授權就可以了。

因為我們直接使用flutter packages pub publish是發布到Pub.dev上,并不是發布到私有倉庫,該怎么辦呢?

其實呢,也很簡單!像versionCode,項目名,等都和發布Pub.dev是一樣的。沒啥區別。

有兩種方式:

就是這么簡單o( @ )o

相信大家引用Pub.dev上的第三方庫都會了哈,到處都是這里不講了

在使用flutter pub get就可以拉到私有倉庫項目了

以上就差不多聊了聊package發布和獲取的事兒了,都很明了,大家可以試試,挺簡單的。

PS: 寫文不易,覺得沒有浪費你時間,請給個點贊~ ????

Flutter(六)Android與Flutter混合開發(Hybird)

如果我們目前的項目是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 開發筆記

下面這種情況下,為 InkWell 設置的 splashColor 不會生效:

需要用 Material 去除背景色,然后將顏色設置在 InkWell 外部:

在 Dialog builder 中使用 WillPopScope 禁用返回鍵返回:

注意:使用此方法同時也會禁用 iOS 上的手勢滑動返回功能,推薦判斷平臺后再使用。

修改對話框中的復選框狀態,最簡便的方法是通過 Element 中的 markNeedsBuild 方法:

當然,更推薦的做法是通過 StatefulBuilder ,然后就可以在 Dialog 中調用 setState 方法了,不過在調用 setState 時需要判斷 Dialog 是否已經關閉,否則會造成 setState() called after dispose() 的錯誤,可以通過添加一個標志位來解決,如下:

在 Web 中加載網絡圖片有時會失敗,遇到這樣的報錯: Exception caught by image resource service... ,造成該錯誤的原因通常是,圖片跨域了(見 跨域資源共享 )。最簡單的解決辦法是, 使用 HTML 渲染加載 ,而不是默認的 CanvasKit。

Flutter 中所有的 list 默認都是沒有 ScrollBar 的,必須使用 ScrollBar 組件。ScrollBar 組件通過監聽 ScrollView 的 ScrollNotification 來刷新位置,所以 List 的長度必須是固定的。

當使用 WebView 等高度不定的組件時會出現內容被截斷的情況,通??梢允褂?NestedScrollView 來解決該問題,需要在 WebView 外部嵌套 SingleChildScrollView。

雖然使用了緩存,而且也是用 builder 加載圖片的,但是發現一個現象:滑動屏幕后圖片短暫消失并重新加載了。圖片高度很高時這種現象更加明顯,其原因是超出屏幕范圍一定距離的組件被重新渲染了。解決方法是在 ListView 上設置 cacheExtent 參數:

該參數的作用是改變超出屏幕高度后繼續渲染的范圍(以像素為單位),比如設置成 9999 后意味著超出屏幕 10000 像素以內的內容都會被保留下來。

借助 IntrinsicHeight 組件:

另外,IntrinsicHeight 還可以用于 Dialog 或者 BottomSheet 中,使得其中的元素 顯示內在元素的高度 ,從而避免元素因為約束的存在而不顯示或者高度太高(比如在使用了 Column 或者 Row 的時候)。

在通過 Uri 的 queryParameters 獲取 query 參數時,發現有些鏈接會拋出下面異常:

造成該異常的原因是 Uri 默認使用 utf-8 解碼超鏈接字符串,如果鏈接中包含非 utf-8 字符,就會造成上面的錯誤,相關 issue 見: issue #31621 。目前該 issue 處于 open 的狀態,暫時的解決辦法是,在所有使用到 queryParameter 的地方用 try..catch 捕捉可能拋出的異常。

Flutter 開發非常依賴各種官方或第三方的插件,而在使用這些插件時多少都會遇到一些問題,大部分問題都可以通過搜索和查找 issue 來解決。這里記錄下一些我在使用部分插件時遇到的問題及其解決方法。

目前該庫沒有圖片加載完成的回調(見 issue #545 ),不過我們可以通過在 imageBuilder 中來添加回調:

這是一個應用內更新插件,安卓 10 以上安裝時需要在 manifest 中添加以下內容:

目前功能最強大的 WebView 插件,基本能滿足絕大部分移動端網頁加載的需求,而且可定制化程度高。

一般通過 CookieManager 修改 Cookie,攔截請求并修改請求對象的 Header 不會生效。

InAppWebViewOptions 的 userAgent 只在 iOS 上生效,而 applicationNameForUserAgent 只在 Android 上生效,所以最好的做法是分平臺設置 InAppWebViewOptions ,而且需要注意,由于設置 userAgent 后會覆蓋默認的 UserAgent,所以如果需要在默認的 UserAgent 上添加其它參數,iOS 上需要通過 InAppWebViewController.getDefaultUserAgent() 獲取默認 UserAgent 參數,而 Android 不需要添加。

如果圖片源或者請求是 http 的,為了在 Android 上正常加載請求,必須在 AndroidInAppWebViewOptions 中將 mixedContentMode 設置為 AndroidMixedContentMode.MIXED_CONTENT_ALWAYS_ALLOW 。

當我們想要設置全屏圖片的時候,由于默認的 Constraint 會將圖片居中顯示,所以圖片四周會留有空隙。為了去除這個限制,我們需要 Xcode 中打開 LaunchScreen.storyboard,然后在 View Controller 的 View 和 LaunchImage 上的 Safe Area 去掉。

具體設置方法:右側 Inspector 面板 Show the Size inspector 解選 Layout Margins 中的 Safe Area Relative Margins,拖動圖片占滿全屏,然后根據 View Controller Scene 的 Warning,更新 Constraint 就可以了。

在集成某些三方庫之后,在使用命令行運行 iOS 模擬器的時候可能會遇到下面這個報錯:

這是因為 iOS 模擬器未來將會兼容 arm64 架構,但是目前還不支持,所以我們需要修改 Build Setting 使得能夠在 x86_64 的模擬器上運行,操作步驟見 這里 。

離不開DART的Flutter(dart篇)

hello world例子

在終端打印字符串‘Hello World!’

計算斐波那契數列

一個簡單的類

計算兩點距離

異步并發示例

使用了Isolate

1.面向對象

對于面向對象這個概念,相信了解Java的同學對這個概念一定不會陌生。

例如:我們有個Person Object他有很多特征和行為。

這些都是這個Person Object的屬性。

也就是因為有了這些特征,行為等等才決定了這個人是誰。

那么回到Dart當中,所有的都是對象,那么在就可以可以跟進對象的屬性的特征,方法等等來進行編程。

之所以我們在這里又特別強調了一下面向對象的概念,是因為這個概念在Dart語言當中,至關重要!

2.最重要的幾個概念

3.Dart的部分特性

4.Dart的內置庫

包名

描述

dart:asynv

異步編程,提供Future,Stream類

dart:collection

集合

dart:convert

不同類型的字符編碼解碼

dart:core

Dart語言核心功能,內置類型

dart:html

網頁開發用到的庫

dart:io

文件讀寫,IO相關

dart:math

數字常量以及函數,隨機算法等

dart:svg

事件和動畫矢量圖支持

綜上述所說要想學Flutter,先學Dart!關于Flutter下篇我會講到。為什么離不開dart!

有關更多面經、核心技術筆記;自己也是從事Android開發5年有余了;整理了一些Android開發技術核心筆記和面經題綱, 如有需要的同學請私信我回復“核心筆記”或“面試”領取!

網站題目:flutter庫開發,flutter網站開發
文章起源:http://vcdvsql.cn/article38/dsdjdsp.html

成都網站建設公司_創新互聯,為您提供網站制作、靜態網站建站公司、App開發、品牌網站建設品牌網站制作

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

綿陽服務器托管