Flutter
大约 3 分钟
Flutter
介绍💔
镜像💔
- 必做配置否则下载卡死
- 新建或修改 $HEOM$/.gradle/init.gradle
- 用户家目录下创建
- 配置内容
def repoConfig = {
all { ArtifactRepository repo ->
if (repo instanceof MavenArtifactRepository) {
def url = repo.url.toString()
if (url.contains('repo1.maven.org/maven2') || url.contains('jcenter.bintray.com')) {
println "gradle init: (${repo.name}: ${repo.url}) removed"
remove repo
}
}
}
// maven { url 'http://mirrors.cloud.tencent.com/nexus/repository/maven-public/' }
maven { url 'https://maven.aliyun.com/repository/central' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
}
allprojects {
buildscript {
repositories repoConfig
}
repositories repoConfig
}
项目🐷
官方组件在线示例
明星组件库
- 2023/4/21
- Packages
共享数据
状态库
轮播库
通知库
滑块库
- 示例: QQ滑动后显示删除
- flutter_slidable
位置库
- 示例: 获取当前位置
- geolocator
文字库
- 示例文字动画: animated-text
- animated_text_kit
数据库
图标库
加载动画库
无限滚动库
时间选择
表情库
组件动画库
- 官方动画库
- 示例: animations
- animations
其他库
- app启动介绍页
- introduction_screen
介绍🌟
- 为什么要学Flutter?
- 我****,真变态。
布局介绍⛪️
- 2020左右时期
组件 | 作用 | 用途 | 归属于使用 |
---|---|---|---|
Row (er lu fu) | 水平布局 | ||
Column (kao leng) | 垂直布局 | ||
Container(ken ti leng) | 容器 | 可以设置边距 | |
SizedBox | 容器 | 无法设置边距 | |
Center (shen tie) | 剧中布局 | ||
Scaffold | 脚手架 | 主体布局 | |
AppBar | 头部导航 | 导航栏 | Scaffold |
SliverAppBar | 折叠导航 | Scaffold | |
BottomNavigationBar | 底部导航 | 底部菜单 | Scaffold |
ListView.builder | 列表布局 | 可获得索引 | |
ListView | 列表布局 | 不可获得索引 | |
Expanded | 自适应组件 | 当左右大小固定则自适应 | Row/Column |
Visibility | 隐藏or显示组件 | ||
Stack | 层叠组件,从下至上覆盖,最下由先级最高 | ||
GestureDetector | 手势组件 | 页面/按下无阴影 | |
InkWell | 触摸组件 | 组件/按下有阴影 | |
ExpansionTile | 下拉组件(下来显示区域变大) | ||
WillPopScope | 获取系统返回监控 | ||
Divider | 水平线 | ||
IgnorePointer | 排除组件事件 | ||
SafeArea | 系统安全区域 | 去刘海内屏幕 |
- Expanded 如果在 Row/Column 使用时2个则无需指定宽度即可获得自适应宽度-示例
- Expanded 当作占位符可用,左右不设置宽度中间 Expanded 则会把多余空间分配给>Expanded
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Expanded(child: SizedBox(
height:150,child: Card(child: a),),),
Expanded(child: SizedBox(
height:150,child: Card(child: b),),),
],
);
- 不规则布局
- 搭配 Column > Row > [Container]
组件组合常用😎
//拥有弹性的滚动列表,无论内容是否溢出
physics: const AlwaysScrollableScrollPhysics(parent: BouncingScrollPhysics()) ,
//水平线
Divider()
Border(bottom: Divider.createBorderSide(context))
/// 获取当前组件key的子组件高度 _columnHeightKey.currentContext!.findRenderObject()!.semanticBounds.size.height
final GlobalKey _columnHeightKey = GlobalKey();
AS插件🌅
- Android WiFiADB(具有WIFI功能的电脑必装)
路由🌈
//自定义组件路由
Navigator.push(context,MaterialPageRoute(builder: (context){
return const Text("Hello World");
}));
插件👏
- 数据保存插件
- shared_preferences
必须安装🐷
- 不要问为什么,问就是被卡住了很久!
- 😡
- https://gradle.org/
组件😄
- 2022/10/28
IgnorePointer😆
IgnorePointer( //排除点击事件
ignoring: true,
child: 你的组件,
)
GetX🍏
动画操作😃
Get.to(Scaffold(appBar: AppBar(),
body: const Center(child: Text("自定义动画"))),
transition: Transition.rightToLeft);
文档🌅
- https://hfybbs.gitee.io/flutter-getx-doc/quick-start
常用Api❤️
- 屏幕高宽 Get.height & Get.width
Idea模板💒
import 'package:flutter/cupertino.dart';
class ${NAME} extends StatefulWidget{
const ${NAME}({Key? key}) : super(key: key);
State createState() {
return _${NAME}();
}
}
class _${NAME} extends State<${NAME}> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(centerTitle: true,title: const Text("${NAME}"),),
body: const Center(child: Text("Hello World"),),
);
}
}