Flutter 開發從 0 到 1(五)原始碼

吳小龍同學發表於2020-11-16

Flutter 開發從 0 到 1

明天開始又要上班了,你的假期任務完成如何啊?由於平時加班太多了,實在擠不出更多時間,從開始想用 Flutter 《Flutter 開發從 0 到 1(一)需求與準備》寫一個完整的 APP 已經過去三個月了,但是我沒有忘記,這個國慶時間我終於完成了。Flutter 確實強大,不止跨平臺,還支援桌面應用,包括 Window、macOS、Linux,以及 Web 應用,真正一套程式碼,全平臺支援,野心可見一斑。

以上我嘗試過了,打包成了 APK、macOS 桌面應用、Web 應用沒問題,只能用兩個字形容 Flutter:牛皮,今天先分享這個 APP 原始碼。

大體功能如下:

頁面 知識點 效果預覽
框架 1、右滑選單;2、我的收藏 Flutter 開發從 0 到 1(五)原始碼
部落格列表 1、佈局;2、ListView 下拉重新整理好和載入更多 Flutter 開發從 0 到 1(五)原始碼
部落格詳情 1、Markdown 渲染;2、程式碼高亮、3、收縮 FloatingActionButton、4、收藏 Flutter 開發從 0 到 1(五)原始碼
評論列表 1、佈局;2、評論 Flutter 開發從 0 到 1(五)原始碼
賬戶 1、登入、2、註冊 Flutter 開發從 0 到 1(五)原始碼

原始碼

公號「吳小龍同學」回覆關鍵字“AndBlog”獲取原始碼下載連結。

後續更新,這個連結都可以訪問,來,我們一起繼續探討 Flutter。

如何執行

拿到原始碼,可以以 Web Server (web) 或 Chrome (web)執行程式碼, 如果你是 MacBook Pro,你還可以以 iPhone 11 Pro Max (mobile)或 macOS (desktop)執行,執行到 Android 手機,開發的時候卡在了 Running Gradle task ‘assembleDebug’…或者‘assembleRelease’,這裡記錄下,這時候一般在下載 Gradle 並配置專案,所以可能出現的問題一般有兩種:

報錯一:

> Failed to apply plugin [id 'com.android.internal.version-check']
   > Minimum supported Gradle version is 6.1.1. Current version is 5.6.2. If using the gradle wrapper, try editing the distributionUrl in /Users/wuxiaolong/AndroidStudioProjects/flutter_andblog/android/gradle/wrapper/gradle-wrapper.properties to gradle-6.1.1-all.zip

Gradle 目錄 windows 一般在C:\Users\使用者名稱\.gradle\ 下,macOS 一般在/Users/使用者名稱/.gradle下。

如果 Android Studio 開發,該路徑可以在"File | Settings | Build, Execution, Deployment | Build Tools | Gradle"中修改。

我使用的是 “gradle-6.1.1” ,可以在官網 https://gradle.org/releases/ 頁面下載對應的 “complete” 安裝包,放在 /Users/wuxiaolong/.gradle/wrapper/dists/gradle-6.1.1-all/cfmwm155h49vnt3hynmlrsdst目錄下即可。

報錯二:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:desugarDebugFileDependencies'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Could not download arm64_v8a_debug-1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7.jar (io.flutter:arm64_v8a_debug:1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7)
      > Could not get resource 'https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_debug/1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7/arm64_v8a_debug-1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7.jar'.
         > Could not HEAD 'https://storage.googleapis.com/download.flutter.io/io/flutter/arm64_v8a_debug/1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7/arm64_v8a_debug-1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7.jar'.
            > Connect to storage.googleapis.com:443 [storage.googleapis.com/34.64.4.16, storage.googleapis.com/34.64.4.112, storage.googleapis.com/34.64.4.80] failed: connect timed out
   > Could not download x86_debug-1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7.jar (io.flutter:x86_debug:1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7)
      > Could not get resource 'https://storage.googleapis.com/download.flutter.io/io/flutter/x86_debug/1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7/x86_debug-1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7.jar'.
         > Could not HEAD 'https://storage.googleapis.com/download.flutter.io/io/flutter/x86_debug/1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7/x86_debug-1.0.0-ee76268252c22f5c11e82a7b87423ca3982e51a7.jar'.
            > Connect to storage.googleapis.com:443 [storage.googleapis.com/34.64.4.16, storage.googleapis.com/34.64.4.112, storage.googleapis.com/34.64.4.80] failed: connect timed out

解決如下:

開啟專案中 build.gradle 檔案

buildscript {
    repositories {
        //google()
        //jcenter()
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public'}
        maven { url "http://download.flutter.io" }
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.0.1'
    }
}

allprojects {
    repositories {
        //google()
        //jcenter()
        maven { url 'https://maven.aliyun.com/repository/google' }
        maven { url 'https://maven.aliyun.com/repository/jcenter' }
        maven { url 'http://maven.aliyun.com/nexus/content/groups/public'}
        maven { url "http://download.flutter.io" }
    }
}

相關文章