雙倍NB!字節跳動資深研發花7天肝出的這份286頁「Flutter技術進階」

**# 前言前端

截至目前,字節跳動有不少業務落地了 Flutter 技術方案,包括今日頭條、西瓜視頻、皮皮蝦等 20 多個業務在使用 Flutter 開發,有純 Flutter 工程,也有 Flutter 與 Native 的混合工程。git

字節跳動選擇 Flutter 的初心github

與其說Flutter是大前端技術,不如說是大移動端技術。Flutter 發展的 Roadmap 也是先全面支持 Android/iOS 端能力,再進一步完善 Web 端能力支持的。web

字節跳動對於客戶端技術仍是很是重視的,字節跳動有不少客戶端工程師,以前客戶端深刻點的基礎技術更可能是搞插件化、熱修復、性能優化、安全加固等,跨平臺方向一直都是前端工程師在竭盡全力地推動,屬於大前端方向。而 Flutter 是客戶端更有主導的跨平臺技術方案。安全

在字節跳動,跨平臺技術並無造成大規模的落地,也沒有歷史包袱,因此在面對跨平臺技術選型的時候,更關注跨平臺技術的技術上限以及發展潛力,自渲染技術的 Flutter 能夠理解爲更完全更純粹的跨平臺技術,伴隨着媲美原生的流暢度,這即是咱們選擇 Flutter 的初心。性能優化

如今愈來愈多的業務和團隊開始嘗試 Flutter 技術棧,做爲一名開發人員,掌握Flutter的使用是很是有必要的,特別是像阿里、騰訊等公司都使用普遍,那麼如何可以達到「精通」Flutter的程度?今天就來好好談談。前端工程師

簡單介紹一下這份Flutter技術進階筆記,每一個章節都是深刻解析了源碼底層在PDF裏邊有。爲了讓你們更好的學習Flutter技術,我也是第一時間展現給你們了!閉包

筆記內容所有免費分享, 有須要完整版筆記的小夥伴【點擊我】免費獲取哦!

第一章 爲何Flutter是跨平臺開發的終極之選

跨平臺開發是當下最受歡迎、應用最普遍的框架之一。能實現跨平臺開發的框架也五花八門,讓人眼花繚亂。app

最流行的跨平臺框架有 Xamarin、PhoneGap、Ionic、Titanium、Monaca、Sencha、jQuery Mobile、React native、Flutter 等等。但這些工具的表現也是高低有別,各有千秋。框架

在這些流行的框架中,有不少也已經消失在了歷史的長河中被人漸漸遺忘了。但 React native 和 Flutter 這倆框架地位依舊堅挺,備受歡迎。

由於它們倆分別由最強大的科技巨頭 Facebook 和谷歌背書支持。

第二章 在Windows上搭建Flutter開發環境

  • 使用鏡像
  • 系統要求
  • 獲取Flutter SDK
  • 編輯器設置
  • Android設置
  • 起步: 配置編輯器
  • 起步: 體驗
  • 體驗熱重載


筆記內容所有免費分享, 有須要完整版筆記的小夥伴【點擊我】免費獲取哦!

第三章 編寫您的第一個 Flutter App

第1步: 建立 Flutter app

建立一個簡單的、基於模板的Flutter應用程序,按照[建立您的第一個Flutter應用中的指南的步驟, 而後將項目命名爲startup_namer(而不是myapp),接下來你將會修改這個應用來完成最終的APP。

在這個示例中,你將主要編輯Dart代碼所在的lib/main.dart 文件,

提示: 將代碼粘貼到應用中時,縮進可能會變形。您可使用Flutter工具自動修復此問題:

Android Studio / IntelliJ IDEA: 右鍵單擊Dart代碼,而後選擇Reformat Code with dartfmt.

VS Code: 右鍵單擊並選擇Format Document.

Terminal: 運行flutter format <filename>.

1.替換 lib/main.dart. 刪除lib / main.dart中的全部代碼,而後替換爲下面的代碼,它將在屏幕的中心顯示「Hello World」.

import'package:flutter/material.dart';
voidmain()=>runApp(newMyApp());
classMyAppextendsStatelessWidget{
@override
Widgetbuild(BuildContextcontext){
returnnewMaterialApp(
title:'Welcome to Flutter',
home:newScaffold(
appBar:newAppBar(
title:newText('Welcome to Flutter'),
),
body:newCenter(
child:newText('Hello World'),
),
),
);
}}

2.運行應用程序,你應該看到以下界面.

分析

本示例建立一個Material APP。Material是一種標準的移動端和web端的視覺設計語言。 Flutter提供了一套豐富的Material widgets。

main函數使用了(=>)符號, 這是Dart中單行函數或方法的簡寫。

該應用程序繼承了 StatelessWidget,這將會使應用自己也成爲一個widget。 在Flutter中,大多數東西都是widget,包括對齊(alignment)、填充(padding)和佈局(layout)

Scaffold 是 Material library 中提供的一個widget, 它提供了默認的導航欄、標題和包含主屏幕widget樹的body屬性。widget樹能夠很複雜。

widget的主要工做是提供一個build()方法來描述如何根據其餘較低級別的widget來顯示本身。

本示例中的body的widget樹中包含了一個Center widget, Center widget又包含一個 Text 子widget。 Center widget能夠將其子widget樹對其到屏幕中心。

第2步: 使用外部包(package)

在這一步中,您將開始使用一個名爲english_words的開源軟件包 ,其中包含數千個最經常使用的英文單詞以及一些實用功能.

您能夠 在pub.dartlang.org上找到english_words軟件包以及其餘許多開源軟件包

1.pubspec文件管理Flutter應用程序的assets(資源,如圖片、package等)。 在pubspec.yaml中,將english_words(3.1.0或更高版本)添加到依賴項列表,以下面高亮顯示的行:

dependencies:
  flutter:
    sdk: flutter

  cupertino_icons:^0.1.0
english_words:^3.1.0

2.在Android Studio的編輯器視圖中查看pubspec時,單擊右上角的 Packages get,這會將依賴包安裝到您的項目。您能夠在控制檯中看到如下內容:

flutter packages get
Running "flutter packages get"in startup_namer...
Process finished with exit code 0

3.在 lib/main.dart 中, 引入 english_words, 如高亮顯示的行所示:

import'package:flutter/material.dart';import'package:english_words/english_words.dart';

在您輸入時,Android Studio會爲您提供有關庫導入的建議。而後它將呈現灰色的導入字符串,讓您知道導入的庫還沒有使用(到目前爲止)

4.使用 English words 包生成文原本替換字符串「Hello World」.

Tip: 「駝峯命名法」 (稱爲 「upper camel case」 或 「Pascal case」 ), 表示字符串中的每一個單詞(包括第一個單詞)都以大寫字母開頭。因此,「uppercamelcase」 變成 「UpperCamelCase」
進行如下更改, 如高亮部分所示:

import'package:flutter/material.dart';import'package:english_words/english_words.dart';
voidmain()=>runApp(newMyApp());
classMyAppextendsStatelessWidget{
@override
  Widget build(BuildContext context){
final wordPair =new WordPair.random();
returnnewMaterialApp(
      title:'Welcome to Flutter',
      home:newScaffold(
        appBar:newAppBar(
          title:newText('Welcome to Flutter'),
),
        body:newCenter(
//child: new Text('Hello World'),
          child:newText(wordPair.asPascalCase),
),
),
);
}}

5.若是應用程序正在運行,請使用熱重載按鈕新正在運行的應用程序。每次單擊熱重載或保存項目時,都會在正在運行的應用程序中隨機選擇不一樣的單詞對。 這是由於單詞對是在build 方法內部生成的。每次MaterialApp須要渲染時或者在Flutter Inspector中切換平臺時build 都會運行.

遇到問題?

若是您的應用程序運行不正常,請查找是否有拼寫錯誤。若是須要,使用下面連接中的代碼來對比更正。

· pubspec.yaml (The pubspec.yaml file won’t change again.)

· lib/main.dart

第3步: 添加一個有狀態的部件(Stateful widget)

第4步: 建立一個無限滾動ListView

第5步: 添加交互

第6步: 導航到新頁面

第7步:使用主題更改UI

筆記內容所有免費分享, 有須要完整版筆記的小夥伴【點擊我】免費獲取哦!

第四章 Flutter開發環境搭建和調試

  • 模擬器的安裝與調試
  • 開發環境的搭建

第五章 Dart語法篇之基礎語法(一)

1.Hello Dart
2.數據類型
3.變量和常量
4.集合(List、Set、Map)
5.流程控制
6.運算符
7.函數

第六章 Dart語法篇之集合的使用與源碼解析(二)

1.List
2.Set
3.Map
4.Queue
5.LinkedList
6.HashMap
7.Map、HashMap、LinkedHashMap、SplayTreeMap區別
8.命名構造函數from和of的區別以及使用建議

筆記內容所有免費分享, 有須要完整版筆記的小夥伴【點擊我】免費獲取哦!

第七章 Dart語法篇之集合操做符函數與源碼分析(三)

這一節的內容更實用,絕對能夠提升你的 Flutter 開發效率的函數,那就是集合中經常使用的操做符函數。此次說的內容的比較簡單就是怎麼用,以及源碼內部是怎麼實現的。

1.Iterable<E>
2.forEach使用方式及源碼分析
3.map使用方式及源碼分析
4.any使用方式及源碼分析
5.every使用方式及源碼分析
6.where使用方式及源碼分析
......

第八章 Dart語法篇之函數的使用(四)

1.函數參數
2.匿名函數(閉包,lambda)
3.箭頭函數
4.局部函數
5.頂層函數和靜態函數
6.main函數
7.Function函數對象

第九章 Dart語法篇之面向對象基礎(五)

1.屬性訪問器(accessor)函數setter和getter
2.面向對象中的變量
3.構造函數
4.抽象方法、抽象類和接口
5.類函數

筆記內容所有免費分享, 有須要完整版筆記的小夥伴【點擊我】免費獲取哦!

第十章 Dart語法篇之面向對象繼承和Mixins(六)

本章咱們繼續探索Dart中面向對象的重點和難點(繼承和mixins)。mixins(混合)特性是不少語言中都是沒有的。

本篇主要涉及到 Dart 中的普通繼承、mixins 多繼承的形式(實際上本質並非真正意義的多繼承)、mixins 線性化分析、mixins 類型、mixins 使用場景等。

第十一章 Dart語法篇之類型系統與泛型(七)

1.可選類型
2.接口類型
3.泛型
4.類型具體化

第十二章 Flutter中的widget

1.Flutter頁面-基礎Widget
2.Widget
3.StatelessWidget
4.State生命週期
5.基礎widget

筆記內容所有免費分享, 有須要完整版筆記的小夥伴【點擊我】免費獲取哦!

最後

在現階段,開始嘗試探索和積累沉澱 Flutter 技術能力,並在業務上使用 Flutter 技術的應用,從戰略上來將已經處於領先。

選擇 Flutter,正可謂是「進可攻退可守」,往前進一步,Flutter 應用將來可無縫遷移到 Fuchsia 系統,借用 Fuchsia 系統的能量擴展到更普遍的用戶場景;退一步,Flutter 技術自身在 Android/iOS 平臺的表現相比其餘跨平臺技術已是很優秀。

技術在不斷演變中螺旋前進,平臺自身也隨之演進,將來 Flutter 會朝着多端一體化的方向發展,能支持更多的端(包括平板、筆記本、智能設備等)。

做爲一套跨平臺的 UI 框架,Flutter 採用自渲染的技術方案,是一個上限很高的跨平臺技術,但 Flutter 更重要的是須要提高工程化能力以及生態圈的建設,才能吸引更多的開發者加入。

**

相關文章
相關標籤/搜索