Flutter开发问题汇总(持续更新)

问题汇总(持续更新)

(1) 软键盘

页面弹出一个带有文本输入框的居中弹框,输入文本时,软键盘弹出(非覆盖式弹出)会将整个页面可布局空间高度减小,导致页面底部的‘确定’按钮出现在了软键盘上方,影响视觉体验。

Tags: Flutter

解决方案:当软键盘弹出时隐藏‘确定’按钮,软键盘消失时再显示‘确定’按钮。

思考:采用软键盘覆盖页面的方式可以防止页面可绘制区域高度被缩小,之所以没有采用这种方式的原因是这样做会导致弹框每次都会出现在页面中间,可能也会被软键盘覆盖。

(2) 点击事件失效

FLutter项目中点击A页面的某个button,按下去后手指别松开并静止不动,在此buttononTapDown回调函数中push页面B,并且页面B完全覆盖页面A中的这个button。此时再松开手指,发现buttononTapUponTap回调函数未被执行。

Tags: FlutterGestureDetectorGesture

解决方案:=未解决

(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: Javatoolsxml布局预览属性Android


(5)Android创建并添加Module依赖时报错ERROR: Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :login_component.

Tags: JavaAndroidmoudle

解决方案:
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: FlutterJavaAndroid

解决方案:

  1. 编辑文件 flutter/packages/flutter_tools/lib/src/android/gradle.dart, 设置 -Ptarget-platform=android-arm
  2. 删除文件 flutter/bin/cache/flutter_tools.snapshot
  3. 运行flutter run编译运行程序(注意:需要移除--target-platform=android-arm参数!!)。

(7)华为手机(Huawei DUB AL00AHuawei DUB AL00Huawei BKK AL10Huawei ARS AL00Huawei DUB AL20...)App启动闪退,Flutter引擎报错:[ERROR:flutter/shell/gpu/gpu_surface_gl.cc(70)] Failed to setup Skia Gr context.

Tags: FlutterEngineAndroid

解决方案

截止目前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: AndroidGradleCache

解决方案

1、移除.gradle/caches缓存目录
2、点击Android Studio File -> Sync project with Gradle files选项
3、第2步执行完之后重新打包app就ok啦

参考文献:https://stackoverflow.com/questions/22155938/android-studio-gets-package-name-wrong-when-running-apk/29862639#29862639

你可能感兴趣的:(Flutter开发问题汇总(持续更新))