問題匯總(持續(xù)更新)
(1) 軟鍵盤
頁面彈出一個(gè)帶有文本輸入框的居中彈框,輸入文本時(shí),軟鍵盤彈出(非覆蓋式彈出)會(huì)將整個(gè)頁面可布局空間高度減小,導(dǎo)致頁面底部的‘確定’按鈕出現(xiàn)在了軟鍵盤上方,影響視覺體驗(yàn)。
Tags: Flutter
解決方案:當(dāng)軟鍵盤彈出時(shí)隱藏‘確定’按鈕,軟鍵盤消失時(shí)再顯示‘確定’按鈕。
思考:采用軟鍵盤覆蓋頁面的方式可以防止頁面可繪制區(qū)域高度被縮小,之所以沒有采用這種方式的原因是這樣做會(huì)導(dǎo)致彈框每次都會(huì)出現(xiàn)在頁面中間,可能也會(huì)被軟鍵盤覆蓋。
(2) 點(diǎn)擊事件失效
FLutter項(xiàng)目中點(diǎn)擊A頁面的某個(gè)button,按下去后手指別松開并靜止不動(dòng),在此button的onTapDown回調(diào)函數(shù)中push頁面B,并且頁面B完全覆蓋頁面A中的這個(gè)button。此時(shí)再松開手指,發(fā)現(xiàn)button的onTapUp、onTap回調(diào)函數(shù)未被執(zhí)行。
Tags: Flutter、GestureDetector、Gesture
解決方案:=未解決
(3)一種好的單例模式寫法
基于靜態(tài)類(static修飾的類)運(yùn)行過程中只被加載一次的事實(shí),實(shí)現(xiàn)了單例模式中單例類始終只有一個(gè)實(shí)例的效果
Tags: Java、設(shè)計(jì)模式、單例模式
class SampleClass{
private SampleClass(){}
private static GerateSingleInstance class{
public static SampleClass instance = new SampleClass();
}
public static SampleClass instance(){
return SampleClass.GerateSingleInstance.instance;
}
}
(4)Android XML布局tools開頭的屬性
Android Studio支持工具(tools)命名空間中的各種XML屬性,這些屬性支持設(shè)計(jì)時(shí)功能(例如,在片段中顯示哪種布局)或編譯時(shí)行為(例如應(yīng)用于XML資源的縮小模式)。 構(gòu)建應(yīng)用程序時(shí),構(gòu)建工具會(huì)刪除這些屬性,因此不會(huì)影響APK大小或運(yùn)行時(shí)行為。
Tags: Java、tools、xml布局預(yù)覽屬性、Android
<TextView
xmlns:tools="http://schemas.android.com/tools"
android:text="@string/hello_world"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
tools:text="@string/hello_world" //tools屬性,僅預(yù)覽時(shí)生效
tools:showIn="@layout/activity_main" //tools屬性,僅預(yù)覽時(shí)生效
/>
(5)Android創(chuàng)建并添加Module依賴時(shí)報(bào)錯(cuò)ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :login_component.
Tags: Java、Android、moudle
解決方案:
1.將新建的`module_name`目錄下`build.gradle`的`apply plugin: 'com.android.application'`改為`apply plugin: 'com.android.library'`
2.刪除上述`build.gradle`中`defaultConfig`里面的`applicationId`
3.此時(shí)即可在`app`模塊里添加新建`module_name`的依賴
(6)報(bào)錯(cuò):Could not find an option named "target-platform"
Tags: Flutter、Java、Android
解決方案:
- 編輯文件
flutter/packages/flutter_tools/lib/src/android/gradle.dart, 設(shè)置-Ptarget-platform=android-arm;- 刪除文件
flutter/bin/cache/flutter_tools.snapshot;- 運(yùn)行
flutter run編譯運(yùn)行程序(注意:需要移除--target-platform=android-arm參數(shù)!!)。
(7)華為手機(jī)(Huawei DUB AL00A、Huawei DUB AL00、Huawei BKK AL10、Huawei ARS AL00、Huawei DUB AL20、...)App啟動(dòng)閃退,F(xiàn)lutter引擎報(bào)錯(cuò):[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(70)] Failed to setup Skia Gr context.
Tags: Flutter、Engine、Android
解決方案
截止目前Flutter最新穩(wěn)定版本是
v1.12.13+hotfix6。經(jīng)過測(cè)試,F(xiàn)lutter版本高于v1.10.9時(shí),在以上所屬機(jī)型上必現(xiàn)啟動(dòng)Crash。當(dāng)把Flutter版本切換至v1.10.9及以下時(shí)則不會(huì)出現(xiàn)問題。因此如果在華為手機(jī)上出現(xiàn)此類問題時(shí)只需將Flutter版本降至v1.10.9及以下即可。最后附上issue地址: https://github.com/flutter/flutter/issues/46866
(8)安卓打包時(shí),gradle用錯(cuò)了包名(pm installing wrong package name)
Tags: Android、Gradle、Cache
解決方案
1、移除
.gradle/caches緩存目錄
2、點(diǎn)擊Android StudioFile -> Sync project with Gradle files選項(xiàng)
3、第2步執(zhí)行完之后重新打包app就ok啦