Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 卡片小部件中的选项卡栏导航_Dart_Flutter - Fatal编程技术网

Dart 卡片小部件中的选项卡栏导航

Dart 卡片小部件中的选项卡栏导航,dart,flutter,Dart,Flutter,我有一个使用脚手架和底部导航的主页。在脚手架的主体中,我有一个包含2个卡片小部件的页面。我正在尝试为第二张独立于底部导航的卡实现一个“子”选项卡栏导航。有没有一种方法可以实现卡片小部件的选项卡式栏导航?我试过使用脚手架,但是标签栏的高度太大了。从文档中可以看出,这似乎是由于flexiblespace小部件造成的,但我还没有找到消除/扩展它的方法,指针将受到赞赏 import 'package:flutter/material.dart'; void main() { runApp(new

我有一个使用脚手架和底部导航的主页。在脚手架的主体中,我有一个包含2个卡片小部件的页面。我正在尝试为第二张独立于底部导航的卡实现一个“子”选项卡栏导航。有没有一种方法可以实现卡片小部件的选项卡式栏导航?我试过使用脚手架,但是标签栏的高度太大了。从文档中可以看出,这似乎是由于flexiblespace小部件造成的,但我还没有找到消除/扩展它的方法,指针将受到赞赏

import 'package:flutter/material.dart';


void main() {
  runApp(new MaterialApp(home: new MyTabs()));
}

class MyTabs extends StatefulWidget {
  @override
  MyTabsState createState() => new MyTabsState();
}

class MyTabsState extends State<MyTabs> with SingleTickerProviderStateMixin {
  TabController controller;

  @override
  void initState() {
    super.initState();
    controller = new TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(
            title: new Text("Pages"),
            backgroundColor: Colors.deepOrange,
            ),
        bottomNavigationBar: new Material(
            color: Colors.deepOrange,
            child: new TabBar(controller: controller, tabs: <Tab>[
              new Tab(icon: new Icon(Icons.arrow_forward)),
              new Tab(icon: new Icon(Icons.arrow_downward)),
              new Tab(icon: new Icon(Icons.arrow_back)),
            ])),
        body: new TabBarView(controller: controller, children: <Widget>[
          new First(),
          new Second(),
          new Third()
        ]));
  }
}
class First extends StatefulWidget {
  @override
  FirstState createState() => new FirstState();
}

class FirstState extends State<First> with SingleTickerProviderStateMixin {
  TabController controller1;

  @override
  void initState() {
    super.initState();
    controller1 = new TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    controller1.dispose();
    super.dispose();
  }



  @override
  Widget build(BuildContext context) {
    return new Column(children: [
      new Expanded(
        child: new Card(
            child: new Center(
                child: new Icon(Icons.favorite,
                    size: 150.0, color: Colors.redAccent))),
      ),
      new Expanded(child: new Card(
          child: new Center(
              child: new Container(
                  child: new Scaffold(
                      appBar: new AppBar(
                          bottom: new TabBar(
                              controller: controller1,
                              tabs: <Tab>[
                                new Tab(icon: new Icon(Icons.arrow_forward)),
                                new Tab(icon: new Icon(Icons.arrow_downward)),
                                new Tab(icon: new Icon(Icons.arrow_back)),
                              ]
                          )),
                      body: new TabBarView(
                          controller: controller1,
                          children: <Widget>[
                            new Text("Hello"),
                            new Text("world"),
                            new Text("Hi")
                          ]
                      )
                  )
              )
          ))),
    ]);
  }
}

class Second extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Container(
        child: new Center(
            child: new Icon(Icons.favorite, size: 150.0, color: Colors.redAccent)
        )
    );
  }
}

class Third extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Container(
        child: new Center(
            child: new Icon(Icons.favorite, size: 150.0, color: Colors.redAccent)
        )
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(新材料应用程序(主页:new MyTabs());
}
类MyTabs扩展StatefulWidget{
@凌驾
MyTabsState createState()=>新建MyTabsState();
}
类MyTabsState使用SingleTickerProviderStateMixin扩展状态{
tab控制器;
@凌驾
void initState(){
super.initState();
控制器=新的TabController(vsync:this,长度:3);
}
@凌驾
无效处置(){
controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“页面”),
背景颜色:Colors.deepOrange,
),
底部导航栏:新材质(
颜色:颜色。深橙色,
子项:新选项卡栏(控制器:控制器,选项卡:[
新建选项卡(图标:新建图标(图标.箭头向前)),
新建选项卡(图标:新建图标(图标。向下箭头)),
新建选项卡(图标:新建图标(图标.箭头返回)),
])),
主体:新TabBarView(控制器:控制器,子级:[
新的第一个(),
新的第二个(),
新第三()
]));
}
}
类首先扩展StatefulWidget{
@凌驾
FirstState createState()=>新的FirstState();
}
类FirstState使用SingleTickerProviderStateMixin扩展状态{
tabcontroller1;
@凌驾
void initState(){
super.initState();
controller1=新的TabController(vsync:this,长度:3);
}
@凌驾
无效处置(){
控制器1.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回新列(子项:[
新扩展(
孩子:新卡(
孩子:新中心(
子项:新图标(Icons.favorite,
尺寸:150.0,颜色:Colors.redAccent),
),
新扩展(子:新卡)(
孩子:新中心(
子容器:新容器(
儿童:新脚手架(
appBar:新的appBar(
底部:新选项卡栏(
控制员:控制员1,
选项卡:[
新建选项卡(图标:新建图标(图标.箭头向前)),
新建选项卡(图标:新建图标(图标。向下箭头)),
新建选项卡(图标:新建图标(图标.箭头返回)),
]
)),
正文:新选项卡视图(
控制员:控制员1,
儿童:[
新文本(“你好”),
新文本(“世界”),
新文本(“Hi”)
]
)
)
)
))),
]);
}
}
第二类扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
退回新货柜(
孩子:新中心(
子项:新图标(Icons.favorite,大小:150.0,颜色:Colors.redAccent)
)
);
}
}
第三类扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
退回新货柜(
孩子:新中心(
子项:新图标(Icons.favorite,大小:150.0,颜色:Colors.redAccent)
)
);
}
}

代码是从修改而来的

此代码应该执行您想要的操作。您不需要使用嵌套的
Scaffold
AppBar
,只需要一个简单的
列即可

作为一个旁白,您可能需要考虑<代码> ButoMeavigabsBar < /C> >,因为 TabBar 是一个通常出现在导航内容的顶部的材质小部件。

import 'package:flutter/material.dart';

void main() {
  runApp(new MaterialApp(home: new MyTabs()));
}

class MyTabs extends StatefulWidget {
  @override
  MyTabsState createState() => new MyTabsState();
}

class MyTabsState extends State<MyTabs> with SingleTickerProviderStateMixin {
  TabController controller;

  @override
  void initState() {
    super.initState();
    controller = new TabController(vsync: this, length: 3);
  }

  @override
  void dispose() {
    controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      appBar: new AppBar(
        title: new Text("Pages"),
        backgroundColor: Colors.deepOrange,
      ),
      bottomNavigationBar: new Material(
        color: Colors.deepOrange,
        child: new TabBar(controller: controller, tabs: <Tab>[
          new Tab(icon: new Icon(Icons.arrow_forward)),
          new Tab(icon: new Icon(Icons.arrow_downward)),
          new Tab(icon: new Icon(Icons.arrow_back)),
        ])),
      body: new TabBarView(controller: controller, children: <Widget>[
        new First(),
        new Second(),
        new Third()
      ]));
  }
}

class First extends StatefulWidget {
  @override
  FirstState createState() => new FirstState();
}

class FirstState extends State<First> with SingleTickerProviderStateMixin {
  TabController controller1;

  @override
  void initState() {
    super.initState();
    controller1 = new TabController(vsync: this, length: 3, initialIndex: 0);
  }

  @override
  void dispose() {
    controller1.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return new Column(children: [
      new Expanded(
        child: new Card(
          child: new Center(
            child: new Icon(Icons.favorite,
              size: 150.0, color: Colors.redAccent))),
      ),
      new Expanded(
        child: new Card(
          child: new Column(
            children: <Widget>[
              new Expanded(
                child: new TabBarView(
                  controller: controller1,
                  children: <Widget>[
                    new Text("Hello"),
                    new Text("world"),
                    new Text("Hi")
                  ]
                ),
              ),
              new Container(
                color: Colors.blue,
                child: new TabBar(
                  controller: controller1,
                  tabs: <Tab>[
                    new Tab(icon: new Icon(Icons.arrow_forward)),
                    new Tab(icon: new Icon(Icons.arrow_downward)),
                    new Tab(icon: new Icon(Icons.arrow_back)),
                  ]
                ),
              ),
            ],
          ),
        )
      ),
    ]);
  }
}

class Second extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Container(
      child: new Center(
        child: new Icon(Icons.favorite, size: 150.0, color: Colors.redAccent)
      )
    );
  }
}

class Third extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new Container(
      child: new Center(
        child: new Icon(Icons.favorite, size: 150.0, color: Colors.redAccent)
      )
    );
  }
}
导入“包装:颤振/材料.省道”;
void main(){
runApp(新材料应用程序(主页:new MyTabs());
}
类MyTabs扩展StatefulWidget{
@凌驾
MyTabsState createState()=>新建MyTabsState();
}
类MyTabsState使用SingleTickerProviderStateMixin扩展状态{
tab控制器;
@凌驾
void initState(){
super.initState();
控制器=新的TabController(vsync:this,长度:3);
}
@凌驾
无效处置(){
controller.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“页面”),
背景颜色:Colors.deepOrange,
),
底部导航栏:新材质(
颜色:颜色。深橙色,
子项:新选项卡栏(控制器:控制器,选项卡:[
新建选项卡(图标:新建图标(图标.箭头向前)),
新建选项卡(图标:新建图标(图标。向下箭头)),
新建选项卡(图标:新建图标(图标.箭头返回)),
])),
主体:新TabBarView(控制器:控制器,子级:[
新的第一个(),
新的第二个(),
新第三()
]));
}
}
类首先扩展StatefulWidget{
@凌驾
FirstState createState()=>新的FirstState();
}
类FirstState使用SingleTickerProviderStateMixin扩展状态{
tabcontroller1;
@凌驾
void initState(){
super.initState();
controller1=新的TabController(vsync:this,长度:3,初始索引:0);
}
@凌驾
无效处置(){
控制器1.dispose();
super.dispose();
}
@凌驾
小部件构建(构建上下文){
返回东北