¶安装软件和插件
- Flutter SDK https://flutter.dev/docs/get-started/install/macos
- 安装xcode
- 安装安卓studio并安装flutter, dart插件, sdk tools
- 安装vscode的flutter插件
¶flutter配置
1 | $ export PUB_HOSTED_URL=https://pub.flutter-io.cn |
¶android studio配置
1 | //Macintosh HD ▸ Users ▸ 你的用户名 ▸ .bash_profile |
¶xcode配置
1 | # 配置cli tool |
¶创建Flutter项目
¶命令行创建flutter项目
1 | $ flutter create app_name |
¶Android studio创建flutter项目
File > New > New Flutter Project
¶模拟器调试
¶Android Studio 启动模拟器
添加并选择模拟器和程序入口, 启动模拟器
¶XCode 启动模拟器
¶真机调试
¶Android Studio 真机调试
连接数据线,
¶XCode 真机调试
安装dart
1 | $ brew tap dart-lang/dart |
¶连接了多个设备
1 | $ flutter run -d '设备id(如iPhone X)' |
¶ios真机调试
1 | # 一下命令若出错, 运行 brew doctor |
¶flutter包管理
-
搜索如: flutter_color_plugin
-
添加依赖
1
2
3# pubspec.yaml
dependencies:
flutter_color_plugin: ^0.0.2 -
安装, 点击 Package get
-
导入
1
2<!-- pugin_use.dart -->
import 'package:flutter_color_plugin/flutter_color_plugin.dart'; -
如果遇到问题, stop重新运行, 卸载重装app, 看issue
StatelessWidget
¶特点
内部没有需要管理的状态, 不要根据状态改变自己的渲染
¶常用StatelessWidget子组件
¶Container
¶Text
¶Icon
¶CloseButton
¶BackButton
¶Chip
¶Divider 分割线
height: 可设置容器高度, 不可设置线的高度
¶Card 卡片
带有圆角, 阴影, 边框等效果的卡片
¶AlertDialog 弹出对话框
StatefulWidget
¶常用StatefulWidget子组件
¶MaterialApp
¶BottomNavigationBar 底部导航条
¶RefreshIndicator 刷新指示
¶Image
¶TextField
¶PageView
布局相关组件
¶Container
¶RenderObjectWidget
¶ParentDataWidget
路由跳转
¶通过路由名跳转
¶不通过路由名跳转
¶页面返回
1 | Navigator.pop(context) |
监听用户手势 Gesture
1 | GestureDetctor( |
导入资源文件
1 | # pubspec.yaml |
1 | Image( |
打开第三方APP
添加安装引入url_launcher
1 | _launchURL() async { |
调用相机
- 添加安装引入image_picker插件
- AndroidX compatibillity
- 参照git仓库example配置
/ios/Runner/Info.plist - 安卓模拟器上有假相机可用
可学习的实例项目
- https://github.com/flutter/flutter/tree/master/examples
- https://github.com/flutter/samples
- https://github.com/nisrulz/flutter-examples
- https://github.com/iampawan/FlutterExampleApps
Image widget 图片控件开发
¶加载网络图片
¶加载静态图片
¶加载本地图片
相对路径插件: https://pub.dev/packages/path_provider
1 | import 'dart:io'; |
¶设置Placeholder
从内存中添加Placeholder插件: https://pub.dev/packages/transparent_image
¶配置图片缓存
插件: https://pub.dev/packages/cached_network_image
¶加载Icon
https://material.io/tools/icons/?style=baseline
1 | import 'package:flutter/material.dart'; |
¶配置自定义Icon
AnimationWidget 简化Animation
不需要手动的setState和addListener
AnimationBuilder 让动画和逻辑分离
Hero动画, 页面过渡时共有一部分界面
Flutter调试
- 断点
- 变量Variable视窗与观察Watches视窗
- Frames回退
- Console
Scaffold widget
scaffold脚手架, 实现了基本的material design
的布局结构
PageView
一个可以完成页面之间滚动的widget
轮播组件
flutter_swiper
基于Http实现网络操作
引入http插件
异步: Future 与 FutureBuilder
JSON解析与复杂模型转换
本地存储shared_preferences
shared_preferences插件
ExpansionTile 可展开列表
FractionallySizedBox 撑满尺寸的盒子,
fractionally 微小的, FractionallySizedBox常用来撑满整屏的宽
GridView 网格布局
RefreshIndicator 下拉刷新
ScrollController 上拉加载
与H5混合开发
flutter_webview_plugin