欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

flutter版本路線,flutter 版本更新

vscode flutter 環(huán)境搭建

環(huán)境準備階段:

成都創(chuàng)新互聯(lián)專注于廈門企業(yè)網(wǎng)站建設,成都響應式網(wǎng)站建設公司,商城網(wǎng)站建設。廈門網(wǎng)站建設公司,為廈門等地區(qū)提供建站服務。全流程按需設計,專業(yè)設計,全程項目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務

android-studio 版本:android-studio-ide-191.5977832-windows.exe 3.5.2

flutter版本:stable 版本 (完成系統(tǒng)環(huán)境變量 path配置)

dart版本:2.12.0 (完成系統(tǒng)環(huán)境變量 path配置)

完成相關軟件安裝。

配置flutter相關SDK及andriod studio路徑:

flutter config --android-sdk="C:\Users\Administrator\AppData\Local\Android\Sdk"

flutter config --android-studio-dir="D:\Program Files\Android\Android Studio"

執(zhí)行flutter doctor運行成功。

夜神模擬器地址:D:\Program Files\Nox\bin (完成系統(tǒng)環(huán)境變量 path配置)

andriod SDK tools:C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools (完成系統(tǒng)環(huán)境變量 path配置)

nox_adb.exe connect 127.0.0.1:62001

dart SDK:D:\software\dartsdk-windows-x64-release\dart-sdk\bin

將C:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools 下面adb.exe 復制至D:\Program Files\Nox\bin覆蓋

adb.exe,此外重新復制adb.exe命名為nox_adb.exe,替換原有的nox_adb.exe。

cdm 輸入nox_adb version 及adb version發(fā)現(xiàn)版本一致。

啟動野神模擬器,輸入adb devices發(fā)現(xiàn)虛擬設備,執(zhí)行flutter devices發(fā)現(xiàn) 127.0.0.1:62001 設備。

修改C:\learn_flutter\first_flutter\android\gradle\wrapper\gradle-wrapper.properties

distributionUrl=

修改C:\learn_flutter\first_flutter\android\build.gradle

buildscript {

ext.kotlin_version = '1.3.50'

repositories {

// google()

// jcenter()

maven { url ' ' }

maven { url ' ' }

maven { url ' ' }

}

}

allprojects {

repositories {

// google()

// jcenter()

maven { url ' ' }

maven { url ' ' }

maven { url ' ' }

}

}

修改:C:\win-flutter\flutter\packages\flutter_tools\gradle\flutter.gradle

buildscript {

repositories {

// google()

// jcenter()

maven { url ' ' }

maven { url ' ' }

maven { url ' ' }

}

dependencies {

classpath 'com.android.tools.build:gradle:4.1.0'

}

}

//private static final String DEFAULT_MAVEN_HOST = " ";

private static final String DEFAULT_MAVEN_HOST = " ";

修改:C:\win-flutter\flutter\packages\flutter_tools\gradle\resolve_dependencies.gradle

repositories {

google()

jcenter()

maven {

//url "$storageUrl/download.flutter.io"

url " "

}

}

執(zhí)行 flutter run啟動成功。

環(huán)境搭建坑點在于JDK兼容問題以及網(wǎng)絡問題。

Flutter設置APP版本與構建版本

當一個純Flutter APP開發(fā)完成,我們要打包發(fā)布到App Store和各大安卓市場,這時候我們需要設置APP的版本號。

如果我們在使用原生iOS或者Android開發(fā)的時,我們會在info.plist中設置 version 和 build 或是在build.gradle中設置 versionName 和 versionCode ,他們分別表示APP的版本和構建版本。

但是我們在使用Flutter管理APP版本時,打開 pubspec.yaml 只看到一個 version 字段。這時候我們應該怎么設置APP的 version 和 build 呢?

我們在pub上隨便找一個Flutter的組件,例如官方的 camera ,我們可以看到截止目前為止最新的版本為: camera: ^0.5.2+1 。看到這里,我想大家都明白了,Dart采用的是加號式的版本描述方式, + 前面是版本號, + 后面是當前版本的build號。所以我們設置APP的版本號和build次數(shù),在這里設置即可,例如: version: 1.2.0+1 。

當我們新建一個Flutter工程的時候,我們分別使用Xcode和Android Studio打開iOS和Android的工程可以看到,iOS中的 version 和 build 的值分別為 FLUTTER_BUILD_NAME 和 FLUTTER_BUILD_NUMBER :

同樣我們打開Android工程可以看到有如下定義:

事實上,F(xiàn)lutter在編譯的時候會生成 ios/Flutter/Generated.xcconfig 和 android/local.properties 文件。這兩個文件由Flutter編譯自動生成,不可更改。記錄了包含SDK路徑或者文件路徑,版本信息,環(huán)境配置(release/debug)等信息。原生工程獲取版本信息的變量就定義在這兩個文件里面。

Mac--Flutter更換指定版本

類似錯誤No named parameter with the name ‘XXXXXX‘問題

原因:Flutter版本問題

一、回退到指定版本

1、GitHub搜索flutter 點擊進入后,選擇tags找到需要的版本點進去,如圖:

2、復制版本號

cd ?/Users/apple/Documents/flutter ? ?根目錄,同bash_profile中PATH配置保持一致即可。

git reset --hard 3595343e20a61ff16d14e8ecc25f364276bb1b8b

執(zhí)行完成,檢測 flutter --version

執(zhí)行 flutter doctor

????????了

Flutter 升級空安全攻略

1、升級依賴的插件版本pubspec.yaml(包括example),pub get 解決依賴沖突

2、pubspec.yaml所在路徑下執(zhí)行 dart pub upgrade --null-safety 檢查是否所在flutter工程依賴庫是否都升級到了空安全版本

example示例需要進入example路徑下檢查

1、List默認構造方法刪除,改用[];

main.dart文件main方法第一行增加CustomFlutterBinding();

2、flutter clean,刪除所有 pubspec.lock文件 ,pub get

3、FutureOr報錯引入頭文件、import 'dart:async';

4、屬性用優(yōu)先用late 或者 ?聲明,在確定不為空情況才用!

Flutter 啟動頁的前世今生適配歷程

APP 啟動頁在國內(nèi)是最常見也是必備的場景,其中啟動頁在 iOS 上算是強制性的要求,其實配置啟動頁挺簡單,因為在 Flutter 里現(xiàn)在只需要:

一般只要配置無誤并且圖片尺寸匹配,基本上就不會有什么問題, 那既然這樣,還有什么需要適配的呢?

事實上大部分時候 iOS 是不會有什么問題, 因為 LaunchScreen.storyboard 的流程本就是 iOS 官方用來做應用啟動的過渡;而對于 Andorid 而言,直到 12 之前 windowBackground 這種其實只能算“民間”野路子 ,所以對于 Andorid 來說,這其中就涉及到一個點:

所以下面主要介紹 Flutter 在 Android 上為了這個啟動圖做了哪些騷操作~

在已經(jīng)忘記版本的“遠古時期” , FlutterActivity 還在 io.flutter.app.FlutterActivity 路徑下的時候,那時啟動頁的邏輯相對簡單,主要是通過 App 的 AndroidManifest 文件里是否配置了 SplashScreenUntilFirstFrame 來進行判斷。

在 FlutterActivity 內(nèi)部 FlutterView 被創(chuàng)建的時候,會通過讀取 meta-data 來判斷是否需要使用 createLaunchView 邏輯 :

是不是很簡單,那就會有人疑問為什么要這樣做?我直接配置 Activity 的 android:windowBackground 不就完成了嗎?

這就是上面提到的時間差問題, 因為啟動頁到 Flutter 渲染完第一幀畫面中間,會出現(xiàn)概率出現(xiàn)黑屏的情況,所以才需要這個行為來實現(xiàn)過渡 。

經(jīng)歷了“遠古時代”之后, FlutterActivity 來到了 io.flutter.embedding.android.FlutterActivity , 在到 2.5 版本發(fā)布之前,F(xiàn)lutter 又針對這個啟動過程做了不少調整和優(yōu)化,其中主要就是 SplashScreen 。

自從開始進入 embedding 階段后, FlutterActivity 主要用于實現(xiàn)了一個叫 Host 的 interface ,其中和我們有關系的就是 provideSplashScreen 。

默認情況下它會從 AndroidManifest 文件里是否配置了 SplashScreenDrawable 來進行判斷 。

默認情況下當 AndroidManifest 文件里配置了 SplashScreenDrawable ,那么這個 Drawable 就會在 FlutterActivity 創(chuàng)建 FlutterView 時被構建成 DrawableSplashScreen 。

DrawableSplashScreen 其實就是一個實現(xiàn)了 io.flutter.embedding.android.SplashScreen 接口的類,它的作用就是:

之后 FlutterActivity 內(nèi)會創(chuàng)建出 FlutterSplashView ,它是個 FrameLayout。

FlutterSplashView 將 FlutterView 和 ImageView 添加到一起, 然后通過 transitionToFlutter 的方法來執(zhí)行動畫,最后動畫結束時通過 onTransitionComplete 移除 splashScreenView 。

所以整體邏輯就是:

當然這里也是分狀態(tài):

當然這個階段的 FlutterActivity 也可以通過 override provideSplashScreen 方法來自定義 SplashScreen 。

看到?jīng)]有,做了這么多其實也就是為了彌補啟動頁和 Flutter 渲染之間, 另外還有一個優(yōu)化,叫 NormalTheme 。

通過該配置 NormalTheme ,在 Activity 啟動時,就會首先執(zhí)行 switchLaunchThemeForNormalTheme(); 方法將主題從 LaunchTheme 切換到 NormalTheme 。

大概配置完就是如下樣子, 前面分析那么多其實就是為了告訴你,如果出現(xiàn)問題了,你可以從哪個地方去找到對應的點 。

講了那么多, Flutter 2.5 之后 provideSplashScreen 和 io.flutter.embedding.android.SplashScreenDrawable 就被棄用了,驚不喜驚喜,意不意外,開不開心 ?

通過源碼你會發(fā)現(xiàn),當你設置了 splashScreen 的時候,會看到一個 log 警告:

為什么會棄用?

其實這個提議是在 這個 issue 上,然后通過 這個 pr 完成調整。

大概意思就是: 原本的設計搞復雜了,用 OnPreDrawListener 更精準,而且不需要為了后面 Andorid12 的啟動支持做其他兼容,只需要給 FlutterActivity 等類增加接口開關即可 。

也就是2.5之后 Flutter 使用 ViewTreeObserver.OnPreDrawListener 來實現(xiàn)延遲直到加載出 Flutter 的第一幀。

為什么說默認情況? 因為這個行為在 FlutterActivity 里,是在 getRenderMode() == RenderMode.surface 才會被調用,而 RenderMode 又和 BackgroundMode 有關心 。

所以在 2.5 版本后, FlutterActivity 內(nèi)部創(chuàng)建完 FlutterView 后就會執(zhí)行一個 delayFirstAndroidViewDraw 的操作。

這里主要注意一個參數(shù): isFlutterUiDisplayed 。

當 Flutter 被完成展示的時候, isFlutterUiDisplayed 就會被設置為 true。

所以當 Flutter 沒有執(zhí)行完成之前, FlutterView 的 onPreDraw 就會一直返回 false ,這也是 Flutter 2.5 開始之后適配啟動頁的新調整。

看了這么多,大概可以看到其實開源項目的推進并不是一帆風順的,沒有什么是一開始就是最優(yōu)解,而是經(jīng)過多方嘗試和交流,才有了現(xiàn)在的版本,事實上開源項目里,類似這樣的經(jīng)歷數(shù)不勝數(shù):

Flutter SDK回退指定版本

由于flutter到sdk是托管在github倉庫里的,所以升級降級SDK版本完全可以基于git的形式操作,這也是 flutter version 廢棄后官方推薦的改變SDK版本的方式,

通過Git的方式回退版本一共需要四步:

macOS和Linux的用戶可以在 命令行 中使用 which 命令查看flutter SDK的路徑:

Windows用戶可以在 命令行 中使用 where 命令查看flutter SDK的路徑:

從執(zhí)行命令的結果中截取 /bin/flutter 前的路徑,就是flutter SDK的路徑,例如:

使用 cd 命令進入flutter SDK的路徑:

點擊鏈接 flutter的版本列表 選擇版本號,注意需要選擇和當前Channel一致的版本(參考1.1節(jié)中的方法)

flutter 2.3版本之前,提供了 version 和 downgrade 兩個參數(shù)可以幫助用戶回退版本,這兩個參數(shù)都能回退到指定版本號,區(qū)別是:

使用 verison或downgrade參數(shù)僅需以下三步 :

點擊鏈接 flutter的版本列表 選擇版本號,注意需要選擇和當前Channel一致的版本,查看Channle的方法如何:

分享名稱:flutter版本路線,flutter 版本更新
文章鏈接:http://chinadenli.net/article32/dsgojpc.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供響應式網(wǎng)站外貿(mào)網(wǎng)站建設商城網(wǎng)站外貿(mào)建站網(wǎng)站改版網(wǎng)站建設

廣告

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

外貿(mào)網(wǎng)站制作