Sigami
Sigami Hi~ Hiện tại mình đang học KTPM trường UIT, có đam mê xem phim, công nghệ và viết blog. Hi vọng những bài viết của mình giúp ích được cho các bạn

Flutter Problem Guide

Flutter Problem Guide

Hi~! Bài viết này hướng dẫn cách khắc phục các lỗi mình gặp khi trải nghiệm Flutter.

Flutter x Firebase

Các vấn đề xảy ra khi sử dụng FlutterFire

#Problem 1

Mô tả lỗi: D8: Cannot fit requested classes in a single dex file…

Cách fix:

Trong project/app/build.gradle thêm:

1
2
3
4
5
6
7
8
9
10
11
12
defaultConfig {
    ...

    multiDexEnabled true //<- Dòng này
}
...

dependencies {
    ...

    implementation 'com.android.support:multidex:1.0.3' //<- Dòng này
}

Nếu vẫn chưa khắc phục được, đảm bảo minSdkVersion trong android/app/build.gradle ở version 21 (mặc định là 16).

#Problem 2

Mô tả lỗi: crash app khi dùng chức năng ‘sign in with Google’ và vài dòng log lỗi có dạng

Suppressed: java.lang.NoClassDefFoundError: com.google.android.gms.auth.api.signin.internal.SignInHubActivity …

Cách fix:

  • Đảm bảo minSdkVersion đang ở >= 21 (recommended 23)
  • Trong android/gradle.properties thêm:
    1
    2
    
    android.useAndroidX=true
    android.enableJetifier=true
    
  • Trong android/build.gradle đảm bảo 3 dòng sau:
    1
    2
    3
    4
    5
    
    dependencies {
      classpath 'com.android.tools.build:gradle:3.2.1'
      classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
      classpath 'com.google.gms:google-services:4.2.0'
    }
    

    *Note: Ở thời điểm hiện tại phiên bản service 4.3.0 trở lên vẫn chưa ổn định, mặc định project được tạo thời điểm viết bài là 4.3.2

  • Chạy 2 lệnh cmd lần lượt là flutter cleanflutter pub upgrade.

#Problem 3

Mô tả lỗi: Android dependency ‘androidx.core:core’ has different version for the compile (1.0.0) and runtime (1.0.1) classpath. You should manually set the same version via DependencyResolution

Cách fix: Trong android/build.gradle thêm:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
buildscript {
	...
    dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.2.0'
    }
	
    //Thêm subprojects này
    subprojects {
        project.configurations.all {
            resolutionStrategy.eachDependency { details ->
                if (details.requested.group == 'androidx.core'
                        && !details.requested.name.contains('androidx') ) {
                    details.useVersion "1.0.1"
                }
            }
        }
    }
    ////////

}

#Problem 4

Mô tả lỗi: itemBuilder có thêm tham số index, lỗi có dạng:

The argument type ‘ChatMessage Function(BuildContext, DataSnapshot, Animation)' can't be assigned to the parameter type 'Widget Function(BuildContext, DataSnapshot, Animation, int)'

Cách fix: thêm tham số index vào anonymous function như sau

1
2
  itemBuilder: (_, DataSnapshot snapshot, Animation<double> animation, index) {
  }

Đang cập nhật

Nếu bạn gặp phải lỗi nào khác hoặc giải quyết được 1 lỗi gì khác thì comment bên dưới để giúp đỡ mọi người nhé :’)