「这是我参与11月更文应战的第7天,活动详情检查:2021最后一次更文应战」
【Flutter】学习养成记,【程序员必备技术】
【Flutter】微信项目实战!
1. 写在前面
在上篇文章中介绍了Flutter
中的Button
组件,学了这么多根底组件了,该是实战验证一下学习效果了,那么今天就来个实战项目,建立一下微信的结构吧!
- 【根底语法合集】
【Flutter】Dart中的var、final 和 const基本运用
【Flutter】Dart数据类型之num
【Flutter】Dart数据类型之String
【Flutter】Dart的数据类型list&Map(数组和字典)
【Flutter】Dart的办法与箭头函数
【Flutter】Dart的办法中的可选参数、办法作为参数传递
【Flutter】Dart中的匿名函数、闭包
【Flutter】Dart中的类和目标
【Flutter】Dart中的构造函数
【Flutter】Dart的工厂构造办法&单例目标&初始化列表
【Flutter】Dart的类办法和目标操作符
【Flutter】Dart中的承继
【Flutter】Dart中的抽象类和接口
【Flutter】Dart中的Mixins混入你知道是什么吗?
- [根底组件合集]
【Flutter】根底组件【01】Text
【Flutter】根底组件【02】Container
【Flutter】根底组件【03】Scaffold
【Flutter】根底组件【04】Row/Column
【Flutter】根底组件【05】Image
【Flutter】根底组件【06】Icon
【Flutter】根底组件【07】Appbar
【Flutter】根底组件【08】BottomNavigationBar
【Flutter】根底组件【09】Button
2. 新建项目
- 新建项目
挑选File -> New -> New Flutter Project
新建一个 flutter 项目
- 挑选 Flutter App
- 设置项目名称为
flutter_wechat
3. main.dart
3.1 main函数
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: true,//去掉 debug 符号
theme:ThemeData(
primarySwatch: Colors.blue,//导航栏色彩
),
home: RootPage(),
);
}
}
-
home
: 相当于 OC 中的 UITabBarController,这是 APP 的骨架 -
debugShowCheckedModeBanner
:去掉 debug的符号,设置 false就不展示 -
theme
:主题的设置
3.2 创立根视图
- 根视图
RootPage
设置,
先来创立一个文件root_page.dart
,设置 tabbar
- 新建 dart 文件
3.3 设置BottomNavigationBar
- bottomNavigationBar
在Scaffold
组件里边有个特点bottomNavigationBar
,这个便是相当于咱们 OC 中的 tabbar,它是承继自StatefulWidget
。经过BottomNavigationBar
的items
来设置 4 个页面,用BottomNavigationBarItem
来构造。
bottomNavigationBar: BottomNavigationBar(
currentIndex: 0,
fixedColor: Colors.green,
type: BottomNavigationBarType.fixed,
items: const [
BottomNavigationBarItem(
icon: Icon(Icons.message),
label: '微信'),
BottomNavigationBarItem(
icon: Icon(Icons.bookmark),
label: '通讯录'),
BottomNavigationBarItem(
icon: Icon(Icons.history),
label: '发现'),
BottomNavigationBarItem(
icon: Icon(Icons.person_outline),
label: '我'),
],
)
3.4 BottomNavigationBar
BottomNavigationBar
的一些特点介绍:
-
type:BottomNavigationBarItem
的形式,BottomNavigationBarType
是枚举,有fixed
和shifting
两种形式设置。 -
currentIndex
:当时选中的是哪个 item,便是底部 4 个 item的切换选中的值,能够经过点击的办法切换改值 -
fixedColor
:填充的色彩,item 的填充色彩
3.5 创立微信页面
- 微信界面
一个 BottomNavigationBarItem
对应的页面就相当于 OC 中的 UIViewController
。
class ChatPage extends StatefulWidget {
const ChatPage({Key? key}) : super(key: key);
@override
_ChatPageState createState() => _ChatPageState();
}
class _ChatPageState extends State<ChatPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text(
'微信页面',
style: TextStyle(color: Colors.black),
),
),
body:const Center(
child: Text('微信页面'),
),
);
}
}
- BottomNavigationBarItem的切换
BottomNavigationBarItem的切换需求实现onTap
点击办法来进行切换。
//BottomNavigationBar 的点击事情
onTap: (index) {
print("index = $index");
setState(() {
_currentIndex = index;
});
},
在onTap
办法的回调里边,能够拿到点击的 item 的值,就能够设置当时需求显现的页面时哪个,经过_currentIndex = index;
来改动。
留意
: 因为涉及到状况的改动,所以Widget
有必要运用带状况的StatefulWidget
,在回调办法里边,需求运用setState
来设置状况的改动。
GitHub项目地址
4. 写在后面
关注我,更多内容继续输出
- CSDN
- 简书
喜欢就点个赞吧
觉得有收获的,能够来一波 保藏+关注,避免你下次找不到我
欢迎大家留言沟通,批评指正,
转发
请注明出处,谢谢支持!