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
Dart 颤振:有人能帮我们在颤振中制作定制的TabController吗?_Dart_Flutter_Flutter Layout_Flutter Dependencies - Fatal编程技术网

Dart 颤振:有人能帮我们在颤振中制作定制的TabController吗?

Dart 颤振:有人能帮我们在颤振中制作定制的TabController吗?,dart,flutter,flutter-layout,flutter-dependencies,Dart,Flutter,Flutter Layout,Flutter Dependencies,我正在使用颤振(飞镖)制作一个应用程序。我需要做一个带有渐变背景色的标签控制器。我使用了DefaultTabController,但无法为应用程序栏添加装饰或任何渐变。请在下面查找我的代码: import 'package:flutter/material.dart'; import 'package:vtech/CustomAppBar.dart'; class Policy extends StatefulWidget { @override _PolicyState create

我正在使用颤振(飞镖)制作一个应用程序。我需要做一个带有渐变背景色的标签控制器。我使用了DefaultTabController,但无法为应用程序栏添加装饰或任何渐变。请在下面查找我的代码:

import 'package:flutter/material.dart';
import 'package:vtech/CustomAppBar.dart';

class Policy extends StatefulWidget {
  @override
  _PolicyState createState() => _PolicyState();
}

class _PolicyState extends State<Policy> {
  @override
  Widget build(BuildContext context) {




    return MaterialApp(
      home: DefaultTabController(
        length: 3,
        child: Scaffold(

          appBar: AppBar(
            backgroundColor: Colors.pink,
            bottom: TabBar(
              tabs: [
                Tab(icon: Icon(Icons.directions_car)),
                Tab(icon: Icon(Icons.directions_transit)),
                Tab(icon: Icon(Icons.directions_bike)),
              ],
            ),
            title: Center(child:Text('POLICY')),
          ),
          body: TabBarView(
            children: [
              Icon(Icons.directions_car),
              Icon(Icons.directions_transit),
              Icon(Icons.directions_bike),
            ],
          ),
        ),
      ),
    );

  }
}
导入“包装:颤振/材料.省道”;
导入“包装:vtech/CustomAppBar.dart”;
类策略扩展了StatefulWidget{
@凌驾
_PolicyState createState()=>\u PolicyState();
}
类_PolicyState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:DefaultTabController(
长度:3,
孩子:脚手架(
appBar:appBar(
背景颜色:Colors.pink,
底部:选项卡栏(
选项卡:[
选项卡(图标:图标(图标方向车)),
选项卡(图标:图标(图标方向和交通)),
选项卡(图标:图标(图标方向)),
],
),
标题:中心(子项:文本(“策略”),
),
正文:选项卡视图(
儿童:[
图标(图标、方向和汽车),
图标(图标、方向和交通),
图标(图标、方向和自行车),
],
),
),
),
);
}
}

AppBar
和TabBar小部件不允许设置渐变,只允许设置颜色

要实现所需功能,您可以创建一个自定义小部件
GradientAppBar
GradientTabBar
,该小部件由
堆栈构建,该堆栈集成了一个带有渐变和
AppBar
TabBar
容器

创建带有参数的
GradientAppBar
,这些参数将进入
容器和
AppBar
本身

下面是Gradient AppBar的一个工作示例。下面是TabBar的一个类似示例

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new Policy(),
    );
  }
}

class Policy extends StatefulWidget {
  @override
  _PolicyState createState() => _PolicyState();
}

class _PolicyState extends State<Policy> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 3,
        child: Scaffold(
          appBar: GradientAppBar(
            colors: [Colors.white, Colors.black],
            begin: Alignment.topCenter,
            end: Alignment.bottomCenter,
            elevation: 4.0,
            bottom: TabBar(
              indicatorColor: Colors.white,
              tabs: [
                Tab(icon: Icon(Icons.directions_car)),
                Tab(icon: Icon(Icons.directions_transit)),
                Tab(icon: Icon(Icons.directions_bike)),
              ],
            ),
            title: Center(child: Text('POLICY')),
          ),
          body: TabBarView(
            children: [
              Icon(Icons.directions_car),
              Icon(Icons.directions_transit),
              Icon(Icons.directions_bike),
            ],
          ),
        ),
      ),
    );
  }
}

class GradientAppBar extends StatefulWidget implements PreferredSizeWidget {
  // Gradiente properties
  final AlignmentGeometry begin;
  final AlignmentGeometry end;
  final List<Color> colors;

  // Material property
  final double elevation;

  // AppBar properties - Add all you need to change
  final Widget title;
  final PreferredSizeWidget bottom;

  @override
  final Size preferredSize;

  GradientAppBar({
    Key key,
    @required this.colors,
    this.begin = Alignment.centerLeft,
    this.end = Alignment.centerRight,
    this.elevation,
    this.title,
    this.bottom,
  })  : preferredSize = new Size.fromHeight(
            kToolbarHeight + (bottom?.preferredSize?.height ?? 0.0)),
        super(key: key); //appBar.preferredSize;

  @override
  _GradientAppBarState createState() => _GradientAppBarState();
}

class _GradientAppBarState extends State<GradientAppBar> {
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Material(
          elevation: widget.elevation,
          child: Container(
            decoration: BoxDecoration(
                gradient: LinearGradient(
              begin: widget.begin,
              end: widget.end,
              colors: widget.colors,
            )),
          ),
        ),
        AppBar(
          backgroundColor: Colors.transparent,
          elevation: 0.0,
          bottom: widget.bottom,
          title: widget.title,
        ),
      ],
    );
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
标题:“颤振演示”,
主题:新主题数据(
主样本:颜色。蓝色,
),
主页:新政策(),
);
}
}
类策略扩展了StatefulWidget{
@凌驾
_PolicyState createState()=>\u PolicyState();
}
类_PolicyState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:DefaultTabController(
长度:3,
孩子:脚手架(
appBar:GradientAppBar(
颜色:[颜色。白色,颜色。黑色],
开始:Alignment.topCenter,
结束:对齐。底部中心,
标高:4.0,
底部:选项卡栏(
指示颜色:颜色。白色,
选项卡:[
选项卡(图标:图标(图标方向车)),
选项卡(图标:图标(图标方向和交通)),
选项卡(图标:图标(图标方向)),
],
),
标题:中心(子项:文本(“策略”),
),
正文:选项卡视图(
儿童:[
图标(图标、方向和汽车),
图标(图标、方向和交通),
图标(图标、方向和自行车),
],
),
),
),
);
}
}
类GradientAppBar扩展StatefulWidget实现PreferredSizeWidget{
//梯度特性
最终路线几何开始;
最终对齐几何图形结束;
最后列出颜色;
//材料性质
最终双立面图;
//AppBar属性-添加所有需要更改的内容
最终小部件标题;
最终优选尺寸边缘底部;
@凌驾
最终尺寸首选尺寸;
梯度ppbar({
关键点,
@需要这个颜色,
this.begin=Alignment.centerLeft,
this.end=Alignment.centerRight,
这是海拔高度,
这个名字,
这个,底部,
}):preferredSize=新尺寸。fromHeight(
kToolbarHeight+(底部?首选尺寸?高度?0.0)),
super(key:key);//appBar.preferredSize;
@凌驾
_GradientAppBarState createState()=>GradientAppBarState();
}
类_GradientAppBarState扩展状态{
@凌驾
小部件构建(构建上下文){
返回堆栈(
儿童:[
材料(
标高:widget.elevation,
子:容器(
装饰:盒子装饰(
梯度:线性梯度(
开始:widget.begin,
end:widget.end,
颜色:widget.colors,
)),
),
),
AppBar(
背景颜色:颜色。透明,
标高:0.0,
bottom:widget.bottom,
标题:widget.title,
),
],
);
}
}
这里是渐变选项卡的例子

import 'package:flutter/material.dart';

void main() => runApp(new MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return new MaterialApp(
      title: 'Flutter Demo',
      theme: new ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: new Policy(),
    );
  }
}

class Policy extends StatefulWidget {
  @override
  _PolicyState createState() => _PolicyState();
}

class _PolicyState extends State<Policy> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DefaultTabController(
        length: 3,
        child: Scaffold(
          appBar: AppBar(
            bottom: GradientTabBar(
              colors: [Theme.of(context).primaryColor, Colors.green],
              begin: Alignment.topCenter,
              end: Alignment.bottomCenter,
              tabBar: TabBar(
                //indicatorColor: Colors.white,
                tabs: [
                  Tab(icon: Icon(Icons.directions_car)),
                  Tab(icon: Icon(Icons.directions_transit)),
                  Tab(icon: Icon(Icons.directions_bike)),
                ],
              ),
            ),
            title: Center(child: Text('POLICY')),
          ),
          body: TabBarView(
            children: [
              Icon(Icons.directions_car),
              Icon(Icons.directions_transit),
              Icon(Icons.directions_bike),
            ],
          ),
        ),
      ),
    );
  }
}

class GradientTabBar extends StatefulWidget implements PreferredSizeWidget {
  // Gradiente properties
  final AlignmentGeometry begin;
  final AlignmentGeometry end;
  final List<Color> colors;

  final TabBar tabBar;

  GradientTabBar({
    Key key,
    @required this.colors,
    this.begin = Alignment.centerLeft,
    this.end = Alignment.centerRight,
    this.tabBar,
  }) : super(key: key);

  @override
  Size get preferredSize => tabBar.preferredSize;

  @override
  _GradientTabBarState createState() => _GradientTabBarState();
}

class _GradientTabBarState extends State<GradientTabBar> {
  @override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        Container(
          height: widget.preferredSize.height,
          decoration: BoxDecoration(
              gradient: LinearGradient(
            begin: widget.begin,
            end: widget.end,
            colors: widget.colors,
          )),
        ),
        widget.tabBar,
      ],
    );
  }
}
导入“包装:颤振/材料.省道”;
void main()=>runApp(新的MyApp());
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回新材料PP(
标题:“颤振演示”,
主题:新主题数据(
主样本:颜色。蓝色,
),
主页:新政策(),
);
}
}
类策略扩展了StatefulWidget{
@凌驾
_PolicyState createState()=>\u PolicyState();
}
类_PolicyState扩展状态{
@凌驾
小部件构建(构建上下文){
返回材料PP(
主页:DefaultTabController(
长度:3,
孩子:脚手架(
appBar:appBar(
底部:GradientTabBar(
颜色:[主题.背景.原色,颜色.绿色],
开始:Alignment.topCenter,
结束:对齐。底部中心,
tabBar:tabBar(
//指示颜色:颜色。白色,
选项卡:[
选项卡(图标:图标(图标方向车)),
选项卡(图标:图标(图标方向和交通)),
选项卡(图标:图标(图标方向)),
flexibleSpace: Container(
            decoration: BoxDecoration(
              gradient: LinearGradient(
                begin: Alignment.centerLeft,
                end: Alignment.centerRight,
                colors: [
                  Colors.red,
                  Colors.blue
                ],
              ),
            ),
          ),
  appBar: AppBar(
  title: Center(child: Text("Add Student",),),
  flexibleSpace: Container(
    decoration: BoxDecoration(
      gradient: LinearGradient(
        begin: Alignment.centerLeft,
        end: Alignment.centerRight,
        colors: [
          darkblue,
          darkpurple
        ],
      ),
    ),
  ),
actions: <Widget>[
    IconButton(
    icon: Icon(Icons.account_circle,color: Colors.white,),),



],
),