### 1.1.1 一切皆為組件
組件(Widget)是Flutter應用程序用戶界面的基本構建塊。不僅按鈕、輸入框、卡片、列表這些內容可作為Widget,甚至將布局方式、動畫處理都視為Widget。所以Flutter具有一致的統一對象模型:Widget。
Widget可以定義為:
·一個界面組件(如按鈕或輸入框)。
·一個文本樣式(如字體或顏色)。
·一種布局(如填充或滾動)。
·一種動畫處理(如緩動)。
·一種手勢處理(GestureDetector)。
Widget具有豐富的屬性及方法,屬性通常用來改變組件的狀態(顏色、大小等)及回調方法的處理(單擊事件回調、手勢事件回調等)。方法主要是提供一些組件的功能擴展。比如:TextBox是一個矩形的文本組件,其屬性及方法如下:
·bottom:底部間距屬性。
·direction:文本排列方向屬性。
·left:左側間距屬性。
·right:右側間距屬性。
·top:上部間距屬性。
·toRect:導出矩形方法。
·toString:轉換成字符串方法。
- 前言
- 第1章 開啟Flutter之旅
- 1.1 Flutter的特點與核心概念
- 1.1.1 一切皆為組件
- 1.1.2 組件嵌套
- 1.1.3 構建Widget
- 1.1.4 處理用戶交互
- 1.1.5 什么是狀態
- 1.1.6 分層的框架
- 1.2 開發環境搭建
- 1.2.1 Windows環境搭建
- 1.2.2 MacOS環境搭建
- 1.3 第一個Flutter程序
- 第2章 Flutter基礎知識
- 2.1 入口程序
- 2.2 Material Design設計風格
- 2.3 Flutter主題
- 2.3.1 創建應用主題
- 2.3.2 局部主題
- 2.3.3 使用主題
- 2.4 無狀態組件和有狀態組件
- 2.5 使用包資源
- 2.6 Http請求
- 第3章 Dart語言簡述
- 3.1 Dart重要概念與常用開發庫
- 3.2 變量與基本數據類型
- 3.3 函數
- 3.4 運算符
- 3.5 流程控制語句
- 3.6 異常處理
- 3.7 面向對象
- 3.7.1 實例化成員變量
- 3.7.2 構造函數
- 3.7.3 讀取和寫入對象
- 3.7.4 重載操作
- 3.7.5 繼承類
- 3.7.6 抽象類
- 3.7.7 枚舉類型
- 3.7.8 Mixins
- 3.8 泛型
- 3.9 庫的使用
- 3.10 異步支持
- 3.11 元數據
- 3.12 注釋
- 第4章 常用組件
- 4.1 容器組件
- 4.2 圖片組件
- 4.3 文本組件
- 4.4 圖標及按鈕組件
- 4.4.1 圖標組件
- 4.4.2 圖標按鈕組件
- 4.4.3 凸起按鈕組件
- 4.5 列表組件
- 4.5.1 基礎列表組件
- 4.5.2 水平列表組件
- 4.5.3 長列表組件
- 4.5.4 網格列表組件
- 4.6 表單組件
- 第5章 Material Design風格組件
- 5.1 App結構和導航組件
- 5.1.1 MaterialApp(應用組件)
- 5.1.2 Scaffold(腳手架組件)
- 5.1.3 AppBar(應用按鈕組件)
- 5.1.4 BottomNavigationBar(底部導航條組件)
- 5.1.5 TabBar(水平選項卡及視圖組件)
- 5.1.6 Drawer(抽屜組件)
- 5.2 按鈕和提示組件
- 5.2.1 FloatingActionButton(懸停按鈕組件)
- 5.2.2 FlatButton(扁平按鈕組件)
- 5.2.3 PopupMenuButton(彈出菜單組件)
- 5.2.4 SimpleDialog(簡單對話框組件)
- 5.2.5 AlertDialog(提示對話框組件)
- 5.2.6 SnackBar(輕量提示組件)
- 5.3 其他組件
- 5.3.1 TextField(文本框組件)
- 5.3.2 Card(卡片組件)
- 第6章 Cupertino風格組件
- 6.1 CupertinoActivityIndicator組件
- 6.2 CupertinoAlertDialog對話框組件
- 6.3 CupertinoButton按鈕組件
- 6.4 Cupertino導航組件集
- 第7章 頁面布局
- 7.1 基礎布局處理
- 7.1.1 Container(容器布局)
- 7.1.2 Center(居中布局)
- 7.1.3 Padding(填充布局)
- 7.1.4 Align(對齊布局)
- 7.1.5 Row(水平布局)
- 7.1.6 Column(垂直布局)
- 7.1.7 FittedBox(縮放布局)
- 7.1.8 Stack/Alignment
- 7.1.9 Stack/Positioned
- 7.1.10 IndexedStack
- 7.1.11 OverflowBox溢出父容器顯示
- 7.2 寬高尺寸處理
- 7.2.1 SizedBox(設置具體尺寸)
- 7.2.2 ConstrainedBox(限定最大最小寬高布局)
- 7.2.3 LimitedBox(限定最大寬高布局)
- 7.2.4 AspectRatio(調整寬高比)
- 7.2.5 FractionallySizedBox(百分比布局)
- 7.3 列表及表格布局
- 7.3.1 ListView
- 7.3.2 GridView
- 7.3.3 Table
- 7.4 其他布局處理
- 7.4.1 Transform(矩陣轉換)
- 7.4.2 Baseline(基準線布局)
- 7.4.3 Offstage(控制是否顯示組件)
- 7.4.4 Wrap(按寬高自動換行布局)
- 7.5 布局綜合示例
- 7.5.1 布局分析
- 7.5.2 準備素材
- 7.5.3 編寫代碼
- 第8章 手勢
- 8.1 用GestureDetector進行手勢檢測
- 8.2 用Dismissible實現滑動刪除
- 第9章 資源和圖片
- 9.1 添加資源和圖片
- 9.1.1 指定assets
- 9.1.2 加載assets
- 9.1.3 平臺assets
- 9.2 自定義字體
- 第10章 路由及導航
- 10.1 頁面跳轉基本使用
- 10.2 頁面跳轉發送數據
- 10.3 頁面跳轉返回數據
- 第11章 組件裝飾和視覺效果
- 11.1 Opacity(透明度處理)
- 11.2 DecoratedBox(裝飾盒子)
- 11.3 RotatedBox(旋轉盒子)
- 11.4 Clip(剪裁處理)
- 11.5 案例——自定義畫板
- 第12章 動畫
- 12.1 用AnimatedOpacity實現漸變效果
- 12.2 用Hero實現頁面切換動畫
- 第13章 Flutter插件開發
- 13.1 新建插件
- 13.2 運行插件
- 13.3 示例代碼分析
- 第14章 開發工具及使用技巧
- 14.1 IDE集成開發環境
- 14.1.1 Android Studio/IntelliJ
- 14.1.2 Visual Studio Code
- 14.2 Flutter SDK
- 14.3 使用熱重載
- 14.4 格式化代碼
- 14.5 Flutter組件檢查器
- 第15章 測試與發布應用
- 15.1 測試應用
- 15.1.1 簡介
- 15.1.2 單元測試
- 15.1.3 Widget測試
- 15.1.4 集成測試
- 15.2 發布Android版App
- 15.2.1 檢查App Manifest
- 15.2.2 查看構建配置
- 15.2.3 添加啟動圖標
- 15.2.4 App簽名
- 15.2.5 構建發布版APK并安裝在設備上
- 15.3 發布iOS版App
- 15.3.1 準備工作
- 15.3.2 在iTunes Connect上注冊應用程序
- 15.3.3 注冊一個Bundle ID
- 15.3.4 在iTunes Connect上創建應用程序記錄
- 15.3.5 查看Xcode項目設置
- 15.3.6 添加應用程序圖標
- 15.3.7 準備發布版本
- 15.3.8 將應用發布到App Store
- 第16章 綜合案例——即時通訊App界面實現
- 16.1 項目介紹
- 16.2 項目搭建
- 16.2.1 新建項目
- 16.2.2 添加源碼目錄及文件
- 16.3 入口程序
- 16.4 加載頁面
- 16.5 應用頁面
- 16.6 搜索頁面
- 16.6.1 布局拆分
- 16.6.2 請求獲取焦點
- 16.6.3 自定義TouchCallBack組件
- 16.6.4 返回文本組件
- 16.6.5 組裝實現搜索頁面
- 16.7 聊天頁面
- 16.7.1 準備聊天消息數據
- 16.7.2 聊天消息列表項實現
- 16.7.3 聊天消息列表實現
- 16.8 好友頁面
- 16.8.1 準備好友列表數據
- 16.8.2 好友列表項實現
- 16.8.3 好友列表頭實現
- 16.8.4 ContactSiderList類
- 16.8.5 Contacts類
- 16.9 我的頁面
- 16.9.1 通用列表項實現
- 16.9.2 Personal類