Flutter 開發出現的那些 Bugs 和解決方案「持續更新... 」

語言: CN / TW / HK

攜手創作,共同成長!這是我參與「掘金日新計劃 · 8 月更文挑戰」的第4天,點選檢視活動詳情

記錄 Flutter 開發過程中遇到的一些問題和相關的解決方案~

1. --no-sound-null-safety 錯誤 on vscode

上面是 VSCode 編輯器中空校驗錯誤。解決方案如下:

```bash // vscode 編輯器專案根目錄中建立檔案 .vscode/launch.json // 新增內容 "args": [ "--no-sound-null-safety" ]

// 完整的檔案程式碼示例 { "configurations":[ { "name": "jimmy flutter demo", "program": "lib/main.dart", "request": "launch", "type": "dart", "args": [ "--no-sound-null-safety" ] } ] }

// 之後重新執行專案即可 ```

2. 設定 flutter_screenutil 報錯

直接引用包 flutter_screenutil 去使用,會報錯使用不了 ScreenUtil().setWidth(width) 等方法。

這個錯誤就是我們並沒有按照官網進行使用。需要根據官網逐步進行。

這裡我使用方式一 -- 在app中使用它一次。

```bash void main() => runApp(MyApp());

class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { //填入設計稿中裝置的螢幕尺寸,單位dp return ScreenUtilInit( designSize: const Size(360, 690), minTextAdapt: true, splitScreenMode: true, builder: (context , child) { return MaterialApp( debugShowCheckedModeBanner: false, title: 'First Method', // You can use the library anywhere in the app even in theme theme: ThemeData( primarySwatch: Colors.blue, textTheme: Typography.englishLike2018.apply(fontSizeFactor: 1.sp), ), home: child, ); }, child: const HomePage(title: 'First Method'), ); } } ```

3. 構建安卓應用包出錯

在應用開發完成之後,構建安卓的圖示檔案,可能會出現報錯:

```bash ✗ ERROR: InvalidConfigException Cannot not find minSdk from android/app/build.gradle or android/local.propertiesSpecify minSdk in either android/app/build.gradle or android/local.properties

0 createIconsFromConfig (package:flutter_launcher_icons/main.dart:96:7)

1 createIconsFromArguments (package:flutter_launcher_icons/main.dart:60:7)

2 main (file:///Users/jimmy/Documents/sdk/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_launcher_icons-0.9.3/bin/main.dart:7:26)

3 _delayEntrypointInvocation. (dart:isolate-patch/isolate_patch.dart:295:32)

4 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:192:12)

```

可以在 android/local.properties 檔案中新增內容:

bash flutter.versionName=1.0.0 flutter.versionCode=1 flutter.minSdkVersion=30

在應用開發完成之後,針對安卓應用去打包,可能會出現報錯:

Execution failed for task ':app:processReleaseMainManifest'. Manifest merger failed : uses-sdk:minSdkVersion 16 cannot be smaller than version 21 declared in library

這是因為 minSdkVersion 的問題,我們更改下相關的檔案版本即可:

```bash // 解決方案 // android/app/build.gradle

defaultConfig { // // TODO: Specify your own unique Application ID (http://developer.android.com/studio/build/application-id.html). // applicationId "com.example.jimmy_flutter_demo" // // You can update the following values to match your application needs. // // For more information, see: http://docs.flutter.dev/deployment/android#reviewing-the-build-configuration. // minSdkVersion flutter.minSdkVersion // targetSdkVersion flutter.targetSdkVersion // versionCode flutterVersionCode.toInteger() // versionName flutterVersionName

    applicationId "com.example.jimmy_flutter_demo"
    minSdkVersion 21 // 更改最小的版本
    targetSdkVersion 31
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
    testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

```

如果構建成功,你會看到輸出目錄提示內容類似下面:

bash ✓ Built build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk (7.5MB).

目前暫時遇到這些 Bug,後續會持續更新... 歡迎關注收藏

往期精彩推薦

如果讀者覺得文章還可以,不防一鍵三連:關注➕點贊➕收藏