精华内容
下载资源
问答
  • flutter tab选项卡appbar下的选项卡

    千次阅读 2019-07-07 10:04:50
    flutter tab选项卡 appbar 下的选项卡 TabBar 、Tab、TabBarView 结合实现 这里实现的是appbar 下的选项卡

    更多文章请查看 lutter从入门 到精通

    flutter tab选项卡 appbar 下的选项卡

    TabBar 、Tab、TabBarView 结合实现

    这里实现的是appbar 下的选项卡
    在这里插入图片描述

    import 'package:flutter/material.dart';
    
    /**
     * 有状态StatefulWidget
     *  继承于 StatefulWidget,通过 State 的 build 方法去构建控件
     */
    class TabBarAndTopTab extends StatefulWidget {
      通过构造方法传值
      TabBarAndTopTab();
    
      //主要是负责创建state
      @override
      _DemoStateWidgetState createState() => _DemoStateWidgetState();
    }
    
    /**
     * 在 State 中,可以动态改变数据
     * 在 setState 之后,改变的数据会触发 Widget 重新构建刷新
     */
    class _DemoStateWidgetState extends State<TabBarAndTopTab>
        with SingleTickerProviderStateMixin {
      _DemoStateWidgetState();
    
      List tabs = ["首页", "发现", "我的", "设置"];
    
      //用于控制/监听Tab菜单切换
      //TabBar和TabBarView正是通过同一个controller来实现菜单切换和滑动状态同步的。
      TabController tabController;
    
      @override
      void initState() {
        ///初始化,这个函数在生命周期中只调用一次
        super.initState();
        tabController = TabController(length: tabs.length, vsync: this);
      }
    
      @override
      void didChangeDependencies() {
        ///在initState之后调 Called when a dependency of this [State] object changes.
        super.didChangeDependencies();
      }
    
      @override
      Widget build(BuildContext context) {
        return buildTabScaffold();
      }
    
      //通过“bottom”属性来添加一个导航栏底部tab按钮组,将要实现的效果如下:
      Widget buildTabScaffold() {
        return Scaffold(
          appBar: AppBar(
            title: Text('标题'),
            //设置选项卡
            bottom: buildTabBar(),
            //设置标题居中
            centerTitle: true,
          ),
          //设置选项卡对应的page
          body: buildBodyView(),
        );
      }
    
      //当整个页面dispose时,记得把控制器也dispose掉,释放内存
      @override
      void dispose() {
        tabController.dispose();
        super.dispose();
      }
    
      buildBodyView() {
        //构造 TabBarView
        Widget tabBarBodyView = TabBarView(
          controller: tabController,
          //创建Tab页
          children: tabs.map((e) {
            return Container(
              alignment: Alignment.center,
              child: Text(e, textScaleFactor: 1),
            );
          }).toList(),
        );
        return tabBarBodyView;
      }
    
      buildTabBar() {
        //构造 TabBar
        Widget tabBar = TabBar(
            //tabs 的长度超出屏幕宽度后,TabBar,是否可滚动
            //设置为false tab 将平分宽度,为true tab 将会自适应宽度
            isScrollable: false,
            //设置tab文字得类型
            labelStyle: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
            //设置tab选中得颜色
            labelColor: Colors.white,
            //设置tab未选中得颜色
            unselectedLabelColor: Colors.white70,
            //设置自定义tab的指示器,CustomUnderlineTabIndicator
            //若不需要自定义,可直接通过
            //indicatorColor 设置指示器颜色
            //indicatorWight 设置指示器厚度
            //indicatorPadding
            //indicatorSize  设置指示器大小计算方式
            ///指示器大小计算方式,TabBarIndicatorSize.label跟文字等宽,TabBarIndicatorSize.tab跟每个tab等宽
            indicatorSize: TabBarIndicatorSize.tab,
            //生成Tab菜单
            controller: tabController,
            //构造Tab集合
            tabs: tabs.map((e) => Tab(text: e)).toList());
    
        return tabBar;
      }
    }
    
    
    展开全文
  • flutter tab选项卡appbar中的选项卡

    千次阅读 2019-07-07 10:11:51
    flutter tab选项卡 appbar 下的选项卡,构造的tabbar赋值给appbar 中的title

    flutter tab选项卡 appbar 下的选项卡

    查看appbar 下的选项卡
    更多文章请查看 lutter从入门 到精通

    TabBar 、Tab、TabBarView 结合实现

    在这里插入图片描述

    import 'package:flutter/cupertino.dart';
    import 'package:flutter/material.dart';
    
    class HeaderItemBean {
      final String labelTitle;
      HeaderItemBean(this.labelTitle);
    }
    
    final List<HeaderItemBean> _allPages = <HeaderItemBean>[
      new HeaderItemBean("主页"),
      new HeaderItemBean("发现"),
      new HeaderItemBean("消息"),
      new HeaderItemBean("附近"),
    ];
    
    /**
     * Container 官方给出的简介,是一个结合了绘制(painting)、定位(positioning)以及尺寸(sizing)widget的widget。
     */
    class TabBarTabPage extends StatelessWidget {
      @override
      Widget build(BuildContext context) {
        Widget titleLayout = new TabBar(
          //tabs 的长度超出屏幕宽度后,TabBar,是否可滚动
          //设置为false tab 将平分宽度,为true tab 将会自适应宽度
          isScrollable: true,
          每个label的padding值
          labelPadding: EdgeInsets.all(12.0),
          ///指示器大小计算方式,TabBarIndicatorSize.label跟文字等宽,TabBarIndicatorSize.tab跟每个tab等宽
          indicatorSize: TabBarIndicatorSize.label,
          //设置所有的tab
          tabs: _allPages
              .map((HeaderItemBean page) => new Tab(text: page.labelTitle))
              .toList(),
        );
    
        Widget body = new TabBarView(
            children: _allPages.map((HeaderItemBean page) {
          return Container(
            child: Text(page.labelTitle),
          );
        }).toList());
    
        return new DefaultTabController(
            length: _allPages.length,
            child: new Scaffold(
              appBar: new AppBar(
                //标题是否居中显示,默认值根据不同的操作系统,显示方式不一样,true居中 false居左
                centerTitle: true,
                //Toolbar 中主要内容,通常显示为当前界面的标题文字
                title: titleLayout,
              ),
              body: body,
            ));
      }
    
    }
    
    
    展开全文
  • flutter Tab在滑动时会删除原页面,滑会时会重新加载页面。也就是说如果你使用类创建Tab页面时,你的类方法等会重新执行,这样一来就会造成不必要的麻烦,重现加载就意味着页面连续性不够,用户体验差,浪费多余时间...

           flutter Tab在滑动时会删除原页面,滑会时会重新加载页面。也就是说如果你使用类创建Tab页面时,你的类方法等会重新执行,这样一来就会造成不必要的麻烦,重现加载就意味着页面连续性不够,用户体验差,浪费多余时间。

    解决办法就是使用混入类,保持页面类的生存,具体操作步骤如下:

    class _NowStatePageState extends State<NowStatePage>
        with AutomaticKeepAliveClientMixin {
      @override
      bool get wantKeepAlive => true;
    

           将你的Stateless,或Stateful类混入AutomaticKeepAliveClientMixin 类,重写get方法,将wantKeepAlive 设为 true。

           这样一来,在滑出该类的页面后,该页面并不会被销毁,而是继续运行,再次回到该页面,页面内容将会是页面一直运行到此时的页面内容。

    展开全文
  • tap_water:【声明:未发布前,勿使用,勿用明星,预计于2020年11月底发布】Flutter tab_bar组件,支持中间带加号按钮的TabBar,支持Lottie动画。iTeaTime(技术清谈)团队出品。高度可定制的tabBar和Flutter的...
  • Flutter tab切换页面防止重置

    千次阅读 2019-03-04 15:09:00
    https://github.com/flutter/flutter/blob/master/analysis_options.yaml#L24 class _OpenLogListComponentState extends State<OpenLogListComponent> with AutomaticKeepAliveClientMixin{    @protected ...

    问题描述:TabBar 配合TabBarView切换页面,然后每个页面是一个listview加载数据,但是切换页面后listview的数据会被重置,

    重新被加载了,解决办法使用 with AutomaticKeepAliveClientMixin  实现  @protected bool get wantKeepAlive=>true; 即可,

    可能会出现红色报错,直接忽视

    需要添加下面这个,如果没有analysis_options.yaml这个文件的话

    https://github.com/flutter/flutter/blob/master/analysis_options.yaml#L24

    class _OpenLogListComponentState extends State<OpenLogListComponent> with AutomaticKeepAliveClientMixin{
     
      @protected
      bool get wantKeepAlive=>true;
      //其他逻辑
    }


     

    方法二: 使用IndexedStack存储页面

    _body = IndexedStack(
      children: <Widget>[
        BookHousePage(),
        FunctionPage(),
        ChatPage(),
        MinePage()
      ],
      index: _currentPageIndex,
    );

     

    展开全文
  • flutter tab切换页面防止重置

    千次阅读 2018-07-27 17:19:21
    https://github.com/flutter/flutter/blob/master/analysis_options.yaml#L24 class _OpenLogListComponentState extends State<OpenLogListComponent> with AutomaticKeepAliveClientMixin{ @protected ...
  • Flutter -- Tab

    2021-03-05 13:47:57
    FlutterTab 本文通过提供几个例子介绍Flutter Tab的使用 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c2k064Lg-1614923290293)...
  • Flutter切换tab后保留tab状态

    万次阅读 2018-07-24 11:35:57
    Flutter切换tab后保留tab状态 概述 Flutter中为了节约内存不会保存widget的状态,widget都是临时变量。当我们使用TabBar,TabBarView是我们就会发现,切换tab后再重新切换回上一页面,这时候tab会重新加载重新...
  • android+flutter实现tab主框架,用tabview实现底部5个tab的展示和页面切换
  • Flutter实现Tab切换页面

    千次阅读 2019-04-01 23:04:59
    先看效果图 实现过程分析 首先自定义一个TabBarWidget ... class TabBarWidget extends ... static const int BOTTOM_TAB = 1; //顶部模式 static const int TOP_TAB = 2; final int type; //标题...
  • Flutter - 底部tab

    2019-07-22 20:00:15
    import 'package:flutter/material.dart'; import 'demo01.dart'; import 'editview.dart'; import 'login.dart'; class MainTab extends StatelessWidget { @override Widget build(BuildContext context) {...
  • BottomNavigationBar 是底部...这是Flutter BottomNavigationBar 自定义底部导航条实现底部页面tab切换的效果 看视频的话去B站找 Dart Flutter教程,或者百度搜索 大地老师Flutter教程 BottomNavigationBar 常见...
  • 目录flutter_custom_bottom_tab_bar官方的tab导航,tabbar无法改变宽高,因此无法自定义TabContainerEachTabExample flutter_custom_bottom_tab_bar 和 另外一个bottom_tab_bar的区别:...
  • Flutter之底部tab切换

    2020-12-11 14:32:52
    import 'file:///D:/henanproject/flutter_weight_ui/lib/home/home_tab_page.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of yo...
  • flutter 切换tab的会重新build的解决方案 当我们用如下方式创建tab时 _onTabClick(int index){ _currentIndex=index; setState(() { }); } @override Widget build(BuildContext context) { return ...
  • flutter进行tab页的设计与改造

    千次阅读 2018-10-31 17:51:58
    使用tab页官网地址: ...我们对于其中的显示的样式并不够满意,其实我们可以查看源码,借用里面的逻辑进行自身需要的改造。...import ‘package:flutter/material.dart’; class AppBarBottomSample exte...
  • Flutter底部Tab切换保持页面状态的几种方法,包括Pageview和indexStack等用法
  • 需求: 顶部导航条的功能实现。 效果图: DefaultTabController( length: 2, //配置顶部tab的数量 child: Scaffold( appBar: AppBar( title: Text("普通顶部导航栏"), ... Tab(text: "热.
  • 如何让页面保持原来的状态,而不是每次都要重新加载刷新数据呢?有两种方式。第一种方式:采用IndexdStackIndexdStack和Stack一样,都是层布局控件,...配置底部导航的核心代码如下:import 'package:flutter/materi...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 519
精华内容 207
关键字:

fluttertab