问题汇总(持续更新)
(1) 软键盘
页面弹出一个带有文本输入框的居中弹框,输入文本时,软键盘弹出(非覆盖式弹出)会将整个页面可布局空间高度减小,导致页面底部的‘确定’按钮出现在了软键盘上方,影响视觉体验。
Tags: Flutter
解决方案:当软键盘弹出时隐藏‘确定’按钮,软键盘消失时再显示‘确定’按钮。
思考:采用软键盘覆盖页面的方式可以防止页面可绘制区域高度被缩小,之所以没有采用这种方式的原因是这样做会导致弹框每次都会出现在页面中间,可能也会被软键盘覆盖。
(2) 点击事件失效
FLutter
项目中点击A
页面的某个button
,按下去后手指别松开并静止不动,在此button
的onTapDown
回调函数中push
页面B
,并且页面B
完全覆盖页面A
中的这个button
。此时再松开手指,发现button
的onTapUp
、onTap
回调函数未被执行。
Tags: Flutter
、GestureDetector
、Gesture
解决方案:=未解决
(3)一种好的单例模式写法
基于静态类(static
修饰的类)运行过程中只被加载一次的事实,实现了单例模式中单例类始终只有一个实例的效果
Tags: Java
、设计模式
、单例模式
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属性,这些属性支持设计时功能(例如,在片段中显示哪种布局)或编译时行为(例如应用于XML资源的缩小模式)。 构建应用程序时,构建工具会删除这些属性,因此不会影响APK大小或运行时行为。
Tags: Java
、tools
、xml布局预览属性
、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属性,仅预览时生效
tools:showIn="@layout/activity_main" //tools属性,仅预览时生效
/>
(5)Android创建并添加Module依赖时报错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.此时即可在`app`模块里添加新建`module_name`的依赖
(6)报错:Could not find an option named "target-platform"
Tags: Flutter
、Java
、Android
解决方案:
- 编辑文件
flutter/packages/flutter_tools/lib/src/android/gradle.dart
, 设置-Ptarget-platform=android-arm
;- 删除文件
flutter/bin/cache/flutter_tools.snapshot
;- 运行
flutter run
编译运行程序(注意:需要移除--target-platform=android-arm
参数!!)。
(7)华为手机(Huawei DUB AL00A
、Huawei DUB AL00
、Huawei BKK AL10
、Huawei ARS AL00
、Huawei DUB AL20
、...
)App启动闪退,Flutter引擎报错:[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(70)] Failed to setup Skia Gr context.
Tags: Flutter
、Engine
、Android
解决方案
截止目前Flutter最新稳定版本是
v1.12.13+hotfix6
。经过测试,Flutter版本高于v1.10.9
时,在以上所属机型上必现启动Crash。当把Flutter版本切换至v1.10.9
及以下时则不会出现问题。因此如果在华为手机上出现此类问题时只需将Flutter版本降至v1.10.9
及以下即可。最后附上issue地址: https://github.com/flutter/flutter/issues/46866
(8)安卓打包时,gradle用错了包名(pm installing wrong package name)
Tags: Android
、Gradle
、Cache
解决方案
1、移除
.gradle/caches
缓存目录
2、点击Android StudioFile -> Sync project with Gradle files
选项
3、第2步执行完之后重新打包app就ok啦