长话短说: 创建一个带Scaffold和BottomNavigationBar的app。 在每一个Scaffold中,为每个选项卡创建一个包含一个子项的Stack。...更多知识,请参阅Navigation基础知识教程,以及Navigator,MaterialPageRoute和MaterialApp。 其中一些代码是实验性的。 如果您知道更好的方法,请告诉我。...但是,如果我们只使用Navigator.of(context)来推送新路由,就会发生意想不到的情况。 当新页面出现时,整个``BottomNavigationBar```及其内容会滑动。 不酷。?...在第1-4行,我们定义了两个路由名称:/和/ detail 在第7行,我们定义了TabNavigator的构造函数。 这需要一个navigatorKey和一个tabItem。...这需要一个key和一个initialRoute参数。 它还有一个onGenerateRoute方法,每次需要生成路由时都会调用该方法。 这使用了我们上面定义的_routeBuilders()方法。
对于没有相关基础的人,在正式学习App的UI之前,建议先了解Material Design相关的知识 关于Material Design设计风格的资料 MaterialApp MaterialApp代表使用...MaterialApp属性详解 属性 类型 简述 home Widget 主页。...用于指定当前App打开时显示的页面 routes Map 路由表,定义页面跳转规则 initialRoute String 初始路由名称 onGenerateRoute...RouteFactory 通过pushNamed跳转路由页面时,在routes查找不到时回调 onUnknownRoute RouteFactory onGenerateRoute 无法生成路由时调用...是一个不规则底部工具栏,它比BottomNavigationBar 灵活,可以放置文字和图标等等控件。
extends StatelessWidget { ///无状态的视图(非响应式) @override Widget build(BuildContext context) { return MaterialApp...在 build 方法中,我们构建了一个 MaterialApp,这是 Flutter 应用的核心组件,提供了应用的主题、路由等设置。...onItemTapped, // 点击事件 ), ); } Scaffold 布局 build 方法返回一个 Scaffold 小部件,它提供了应用的基本视觉结构,包括 appBar、body 和...bottomNavigationBar。...onTap 属性将点击事件绑定到 _onItemTapped 方法,使得点击导航项时可以更新状态和切换页面。 7.
未经过改装的MaterialApp 可以说MaterialApp基于WidgetsApp 如果对MaterialApp不熟悉,可先看我上一篇文章: Flutter之MaterialApp使用详解...与MaterialApp相比 18个相同字段: 字段 类型 navigatorKey(导航键) GlobalKey onGenerateRoute(生成路由) RouteFactory...onUnknownRoute(未知路由) RouteFactory navigatorObservers(导航观察器) List initialRoute(初始路由...= null) { builder = (BuildContext context) => widget.home; } else { //这里查找路由对应的Widget,即为routes...BottomNavigationBar、AppBar这些部件,会应用到这个主题 //如果为空使用默认光亮主题 final ThemeData theme = widget.theme ??
我将带领大家尝试编写一个 Flutter 应用,感受一下 Flutter 开发的语法特点和运行效率。 Flutter 应用运行起来比 RN 流畅、编译快、热加载快,所以开发和调试的效率非常高。...这个页面脚手架 //可以快速构建页面 //MaterialApp这个脚手架默认自带顶部ToolBar、路由、主题、国际化等等配置 return MaterialApp(...Flutter框架已经帮我们优化了这部分,所以当我们需要刷新状态的时候不用担心性能问题 // 这个用来构建页面具体布局,这里使用了Scaffold脚手架 // 里面包含了AppBar、body、bottomNavigationBar...我们看下 MaterialApp 脚手架构造方法都提供了哪些可配置的属性功能: const MaterialApp({ Key key, this.navigatorKey, this.home...先了解 Flutter 的入口文件和入口函数,以及简单了解 MaterialApp、Scaffold 脚手架的概念。
Navigator Navigator 是管理路由的控件,通常情况下直接使用Navigator.of(context)的方法来跳转页面,之所以可以直接使用Navigator.of(context)是因为在...WidgetsApp中使用了此控件,应用程序的根控件通常是MaterialApp,MaterialApp包含WidgetsApp,所以可以直接使用Navigator的相关属性。...,onGenerateRoute表示根据RouteSettings生成路由。...TabNavigator(0), TabNavigator(1), TabNavigator(2), ], ), bottomNavigationBar...: BottomNavigationBar( onTap: (int index) { setState(() { _currentIndex
Flutter 封装的带有 AppBar , 底部导航栏 BottomNavigationBar , 侧边栏 的组件 , 使用该组件可以很容易实现一个复杂的导航页面 ; AppBar : 顶部导航栏 ;...BottomNavigationBar : 底部导航栏 ; RefreshIndicator : 刷新指示器 ; Image : 图片组件 ; TextField : 输入框组件 ; PageView...style: textStyle,), ), ), // AlertDialog 对话框 , 该弹窗有一个自动圆角和阴影...组件 ---- MaterialApp 组件是 材料设计 ( Material Design ) APP 组件 , 通常用作页面的根节点 ; MaterialApp 组件是 StatefulWidget...的子类 ; 通过 MaterialApp 组件很容易实现符合 Material Design 规范的应用 ; MaterialApp 组件中的 tittle 字段就是标题设置 , theme 字段设置的是主题
Flutter 中的命名路由在实际项目中使用最为常用。 要想使用命名路由首先要配置路由,并引入路由地址对应的页面组件。...(arguments:arguments) }; @override Widget build(BuildContext context) { return MaterialApp...theme: ThemeData(primarySwatch:Colors.yellow) ); } } 上面的代码中分别引入了三个页面:Form.dart 和..._currentIndex], // 底部导航条 bottomNavigationBar: BottomNavigationBar(...) ] ), )); } } 上面 Tabs 页面代码中引入了三个子页面,分别是 Home.dart 和
脚手架包裹在里面,Scaffold显示的才是整个页面 2、MaterialApp/WidgetApp class MaterialApp extends StatefulWidget MaterialApp...MaterialApp 提供了大量的美观、功能丰富的控件,放弃MaterialApp等于放弃了一整片森林。...,默认值为 Window.defaultRouteName onGenerateRoute : 生成路由的回调函数,当导航的命名路由的时候,会使用这个来生成界面 onLocaleChanged : 当系统修改语言的时候...主体部分大部分是通过组合 Container ,Column,Row,Stack来实现的 floatingActionButton:悬浮按钮 bottomNavigationBar:底部类Tab导航栏...方向上进行布局 Colomn:child在竖直(上下)方向上进行布局 Expanded:填充剩余空间,必须放置于Row, Column或Flex内, Stack+Positoned:Stack与Row和Clomn
Flutter布局基础——BottomNavigationBar 背景 Flutter中BottomNavigationBar类似于 iOS 中的UITabbarController,是导航控制器的一种...--more--> BottomNavigationBar的 type 属性,默认值会根据items的个数而定;当items个数小于4个时,默认值为BottomNavigationBarType.fixed...title = 'Flutter Code Sample'; @override Widget build(BuildContext context) { return const MaterialApp...class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp...参考 BottomNavigationBar Dev Doc 20个Flutter实例视频教程 让你轻松上手工作
Flutter中的路由,通俗地讲就是页面跳转。在Flutter中通过 Navigator 组件管理路由导航。 Flutter中给我们提供了两种配置路由跳转的方式:基本路由和命名路由。...我们先通过一个小例子来了解一下命名路由的大致流程: 第1步,在根组件 MaterialApp 中配置路由信息: //main.dart void main() => runApp(MyApp());...总结 关于命名路由使用的前前后后,我在该文中都做了详细总结,并且做了代码分离,后续在项目中,我们可以参考该文进行命名路由的配置。 替换路由 前文中我们了解了Flutter中的普通路由和命名路由。...今天我们接着来聊聊Flutter中的替换路由和如何返回到跟路由。..._tabIndex], bottomNavigationBar: BottomNavigationBar( type: BottomNavigationBarType.fixed
( // 配置属性 ) } } 属性 MaterialApp 的属性挺多的,不过常用的可能也就是 home , initialRoute 和 routes。...this.persistentFooterButtons, // 底部持久化现实按钮 this.drawer, // 侧滑菜单 左侧 this.endDrawer, // 侧滑菜单 右侧 this.bottomNavigationBar...首页展示了列表,我们可以点击每一项进入到子页面,这个时候我们就需要使用到路由组件。...使用固定的路由名 上面说到的路由其实只是Navigator的一种,还有一种就是使用固定的路由名,有点像react-router 中我们定义一个Router把所有的路由都放在里面 下面看看主入口文件main.dart...补充说明(very important) 前文们提到了MaterialApp组件,这个组件其实一般就在main.dart中使用一次就可以了,因为如果在一个项目中使用了多次MaterialApp,同时你使用了固定路由配置
文章目录 一、BottomNavigationBar 组件 二、BottomNavigationBarItem 组件 三、BottomNavigationBar 底部导航栏代码示例 四、BottomNavigationBar...底部导航栏选中状态切换代码示例 五、BottomNavigationBar 底部导航栏切换选项卡界面 六、 相关资源 一、BottomNavigationBar 组件 ---- BottomNavigationBar.../ 设置字体大小 20, 颜色红色 TextStyle textStyle = TextStyle(fontSize: 20, color: Colors.red); return MaterialApp.../ 设置字体大小 20, 颜色红色 TextStyle textStyle = TextStyle(fontSize: 20, color: Colors.red); return MaterialApp.../ 设置字体大小 20, 颜色红色 TextStyle textStyle = TextStyle(fontSize: 20, color: Colors.red); return MaterialApp
BottomNavigationBar BottomNavigationBar是底部导航栏,可以让我们定义底部tab切换,bottomNavigationBar是之前讲到的Scaffold组件的参数...常见属性: 属性名 说明 items ListBottomNavigationBar>底部导航栏集合 iconSize icon大小 currentIndex 默认选中第几个 onTap 选中变化回调函数...class MyApp extends StatelessWidget{ @override Widget build(BuildContext context) { return MaterialApp...'),), body: Text('tabBar'), bottomNavigationBar: BottomNavigationBar( currentIndex..._page[_bottomIndex],//此处取下标对应的页面即可 bottomNavigationBar: BottomNavigationBar( currentIndex
Flutter布局基础——自定义BottomNavigationBar 背景 这里我们来尝试实现一个不规则的 BottomNavigationBar,首先了解两个系统组件: floatingActionButton...和BottomAppBar <!...title = 'Flutter Code Sample'; @override Widget build(BuildContext context) { return const MaterialApp...title = 'Flutter Code Sample'; @override Widget build(BuildContext context) { return const MaterialApp...Create', ) : null, floatingActionButtonLocation: _fabLocation, bottomNavigationBar
在 Flutter 中使用 NavigationRail 和 BottomNavigationBar “作者:坚果 华为云享专家,InfoQ签约作者,阿里云专家博主,51CTO博客首席体验官,开源项目GVA...本文将向您展示如何使用NavigationRail和BottomNavigationBar在 Flutter 中创建自适应布局。我们将浏览一下这个概念,然后通过一个完整的例子来在实践中应用这个概念。...我们可以使用NavigationRail和BottomNavigationBar来构建现代自适应布局。...收藏夹和设置。...类(flutter.dev) 后记 您已经学习了一种使用 NavigationRail 和 BottomNavigationBar 创建现代自适应用户界面的简单但有效的技术。
PaddingState extends State{ @override Widget build(BuildContext context) { return MaterialApp...extends State{ @override Widget build(BuildContext context) { return MaterialApp...key:当前元素的唯一标识符(类似于 Android 中的 id) appBar:顶部导航栏 body:主体部分 floatingActionButton:悬浮按钮 drawer:抽屉部件 bottomNavigationBar..._tabController, tabs: tabs.map((e) => Tab(text: e)).toList() ), ), bottomNavigationBar...: BottomNavigationBar( // 底部导航 items: [ BottomNavigationBarItem
确实有这样的Widget“ 弗拉德:”我们需要用到MaterialApp的BottomNavigationBar“ 弗拉德:”我们先建5个显示tab内容的布局吧:comu.dart,fit.dart,sports.dart...FitState extends State { 10 @override 11 Widget build(BuildContext context) { 12 return new MaterialApp...75 76 @override 77 Widget build(BuildContext context) { 78 init(); 79 return new MaterialApp...Flutter', 81 home: new Scaffold( 82 body: _bodyList[_selectedIndex], 83 bottomNavigationBar...: new BottomNavigationBar( 84 items: [ 85 new BottomNavigationBarItem
Widget描述了他们的视图在给定其当前配置和状态时应该看起来像什么。...文本显示的方向需要在Text实例中指定,当使用MaterialApp时,文本的方向将自动设定,稍后将进行演示。...name: my_app flutter: uses-material-design: true 为了继承主题数据,widget需要位于MaterialApp内才能正常显示, 因此我们使用MaterialApp...Material应用程序以MaterialApp widget开始, 该widget在应用程序的根部创建了一些有用的widget,其中包括一个Navigator, 它管理由字符串标识的Widget栈(即页面路由栈...是否使用MaterialApp完全是可选的,但是使用它是一个很好的做法。
老孟导读:在Flutter中如何实现点击2次Back按钮退出App,如何实现App中多个Route(路由),如何实现Back按钮只退出指定页面,此篇文章将告诉你。..., )) App中有多个Navigator 我们的App通常是在MaterialApp和CupertinoApp下,MaterialApp和CupertinoApp本身有一个Navigator,...在使用TabView、BottomNavigationBar、CupertinoTabView这些组件时,希望有多个Tab,但每个Tab中有自己的导航行为,这时需要给每一个Tab加一个Navigator
领取专属 10元无门槛券
手把手带您无忧上云