Flutter系列(四)——HelloWorld



想學Flutter,就請關注這個專欄
Flutter系列(一)——詳細介紹
Flutter系列(二)——與React Native進行對比
Flutter系列(三)——環境搭建(Windows)
Flutter系列(四)——HelloWorld
文檔歸檔:
github.com/yang0range/…
android

建立的第一個Demo

上一篇文章,詳細的介紹了Flutter的環境搭建,搭建完成以後,天然火燒眉毛看看如何建立咱們的第一個Demo。ios

打開Android Studiogit

image.png
image.png

能夠看到,能夠看見有四個選項。github


那麼這四個選項有什麼區別呢?bash

Flutter Application
Flutter標準引用程序app

Flutter Plugin
Flutter封裝的Native工程的基礎插件less

Flutter Package
Dart庫工程maven

Flutter Modue
做爲已有工程的一個Module函數

這裏,咱們須要建立一個Flutter Application項目。post


工程目錄結構


這裏,咱們首先能夠看到三個比較重要的目錄,分別是androidios還有lib

android
顧名思義,就是寫Android平臺相關代碼的地方。

ios
和上面相似,這就就是寫ios平臺相關代碼的地方。

lib
這裏纔是咱們真正寫flutter相關代碼的地方。

這裏還有一個十分重要的文件,



pubspec.yaml
這個文件是咱們flutter的配置文件,好比三方的依賴都在這裏,最重要的是這裏還要寫一些資源文件,好比圖片等等,後面咱們會詳細介紹。

從上面目錄結構大體能夠理解爲,整理的flutter的工程結構爲。


運行官方Demo

先把官方Demo運行起來。

運行不起來

咱們第一次運行官方Demo的時候,可能會有運行不來,一直卡在
Running Gradle task 'assembleDebug'...
的狀況,這裏是由於Gradle的Maven倉庫在國外,由於衆所周知的問題,沒法加載。

解決辦法

這裏,咱們就可使用阿里雲的鏡像地址,來解決這個問題。
打開以下目錄,修改的地方。



也能夠直接複製以下代碼。

buildscript {  
  ext.kotlin\_version = '1.3.50'  
  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' }  
 }  
  dependencies {  
  classpath 'com.android.tools.build:gradle:3.5.0'  
  classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin\_version"  
  }  
}  
  
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' }  
 }}
複製代碼

接着打開flutter.gradle文件,路徑在
..\fluttersdk\flutter\packages\flutter_tools\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' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
    }
}
複製代碼

再從新運行,就成功了!



官方Demo結構

打開main.dart文件,就是運動Demo的代碼了。

根據代碼,咱們能夠畫出這個Demo的結構以下圖。



官方Demo中幾個重要的內容

下面咱們着重依次介紹一下。

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

入口函數,這裏用的是Dart語法當中的箭頭函數,這裏和Kotlin的用法十分相像。

咱們能夠看到這裏的MyApp()繼承的是StatelessWidgetStatelessWidget繼承的是Widget

能夠說在flutter當中,一切皆爲widget

這裏的 runApp起到了一個全局更新的做用,通常flutter啓動時調用後不會再調用

MyApp

這裏的Myapp返回的是一個MaterialApp相信瞭解Android的小夥伴對這個不會陌生,這個就是讓這個Flutter保持一個MMaterial的UI風格。

固然,也有IOS的風格,這裏咱們可使用CupertinoApp

StatelessWidget

無中間狀態變化的widget,初始狀態設置之後就不可再變化,
用於不須要維護組件狀態的場景,
createElement()建立StatelessElement對象,一個StatelessWidget對應一個StatelessElement。

能夠看到MyApp就是繼承自StatelessWidget。

StatefulWidget

存在中間狀態變化的widget,createElement()建立StatelfulElement對象
,createState()建立State對象(可能調用屢次),createState()建立State對象(可能調用屢次)。

MyHomePage由於有點擊的count++的致使UI變化,因此繼承自StatefulWidget。

State

State是一個狀態對象,<>裏面是表示該狀態是跟誰綁定的。

State有兩個做用
1.在修改狀態就在這個類裏編寫,Weidget的時候能夠同步的讀取。

2.當狀態有所改變的時候,調用State.setState()同時去刷新Weidget。

State.setState()

將子樹做StatefulWidget的一個子Widget,並建立對應的State類實例,經過調用State.setState()觸發子樹的刷新。

在Demo當中,能夠看到_MyHomePageState就是繼承自State而且經過State.setState()這個方法局部刷新UI。

最後

以上就是關於整個官方Demo的一個較爲詳細的介紹,也是咱們接觸的第一個Flutter項目,接下來咱們就瞭解一下什麼是Dart語言,看看Dart語言有哪些特色,爲何Flutter要使用Dart語言。

Flutter已是Top20的軟件庫,經過接下來的一系列的文章,但願我和你們一塊兒來學習Flutter,一塊兒進步,一塊兒有所收穫,掌握將來技術主流的主動權!

有什麼好的建議,意見,想法歡迎給我留言!

歡迎關注公共號

關注公衆號會有更多收穫!


動動小手指點贊,收藏,關注一鍵三連走一波吧!

相關文章
相關標籤/搜索