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

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
Flutter 使用分数平移时,按下区域上的MaterialButton会被剪裁_Flutter_Dart - Fatal编程技术网

Flutter 使用分数平移时,按下区域上的MaterialButton会被剪裁

Flutter 使用分数平移时,按下区域上的MaterialButton会被剪裁,flutter,dart,Flutter,Dart,我正在构建一个应用程序,我的一些材质按钮(CustomButtonToAddPage)漂浮在导航栏上。从视觉上看,这看起来很完美,但只有头部没有溢出的部分才可以敲击 我曾尝试将自定义按钮移动到header小部件中,并将偏移量改为向下,但同样的问题仍然存在 我有一种感觉,它要么与我构建的clipper有关,要么就是没有使用合适的小部件来完成这项工作 在这个颤振的东西上仍然是新的,显然代码需要清理 eventHeader(_scaffoldKey), Row(

我正在构建一个应用程序,我的一些材质按钮(CustomButtonToAddPage)漂浮在导航栏上。从视觉上看,这看起来很完美,但只有头部没有溢出的部分才可以敲击

我曾尝试将自定义按钮移动到header小部件中,并将偏移量改为向下,但同样的问题仍然存在

我有一种感觉,它要么与我构建的clipper有关,要么就是没有使用合适的小部件来完成这项工作

在这个颤振的东西上仍然是新的,显然代码需要清理

eventHeader(_scaffoldKey),
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: <Widget>[
                Padding(
                  padding: EdgeInsets.only(left: 0),
                  child: FlatButton(
                      onPressed: () {
                        print('Sort By Date');
                      },
                      child: Icon(Icons.swap_vert)),
                ),
                customButtonGoToAddPage(context, '/event_add'),
              ],
            ),
eventHeader(_scaffoldKey),
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
填充物(
填充:仅限边设置(左:0),
孩子:扁平按钮(
已按下:(){
打印(“按日期排序”);
},
子:图标(Icons.swap_vert)),
),
CustomButtongToAddPage(上下文“/event_add”),
],
),
//转到添加页面
行CustomButtonToAddPage(构建上下文上下文,字符串url){
返回行(
mainAxisAlignment:mainAxisAlignment.end,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
分馏翻译(
平移:偏移(-0.2,-0.6),
子对象:对齐(
子:材质按钮(
最小宽度:30.0,
身高:60,
textColor:Colors.green[500],
颜色:颜色,白色,
子:图标(
Icons.add,
尺码:30,
),
已按下:(){
Navigator.of(context.pushNamed)(url);
},
形状:新的RoundedRectangleBorder(
borderRadius:新的borderRadius.circular(100.0)),
校准:分数偏移(0.5,0.0),
),
),
],
);
}

//****页眉
ClipPath事件头(键){
返回ClipPath(
裁剪器:BottomWaveClipper(),
子:容器(
装饰:盒子装饰(
gradient:getAppGradient(),
),
身高:130,
填充:仅限边缘设置(顶部:25.0,底部:5.0),
子:列(
crossAxisAlignment:crossAxisAlignment.stretch,
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
填充物(
填充:从LTRB(20,30,0,0)开始的边缘设置,
儿童:手势检测器(
onTap:()=>{key.currentState.openDrawer()},
子:图标(
图标菜单,
颜色:颜色,白色,
),
),
),
纵队(
儿童:[
headerTitleRow(“事件”),
headerSubtitleRow(“需要更多控制?创建事件”),
],
),
填充物(
填充:来自LTRB(40,20,5,0)的边缘设置,
),
],
),
],
),
),
);
}

//主波削波器
类BottomWaveClipper扩展了CustomClipper{
@凌驾
路径getClip(大小){
var path=新路径();
path.lineTo(0.0,size.height-0);
//var firstControlPoint=偏移量(size.width/4,size.height);
//var firstEndPoint=偏移量(size.width/2.25,size.height-30.0);
//path.quadraticBezierTo(firstControlPoint.dx,firstControlPoint.dy,
//firstEndPoint.dx,firstEndPoint.dy);
第二控制点=
偏移量(size.width-(size.width/2),size.height-40);
var secondEndPoint=偏移(size.width,size.height-0);
path.quadraticBezierTo(secondControlPoint.dx,secondControlPoint.dy,
secondEndPoint.dx,secondEndPoint.dy);
path.lineTo(size.width,size.height-0);
path.lineTo(size.width,0.0);
path.close();
返回路径;
}
@凌驾
bool shouldReclip(CustomClipper oldClipper)=>false;
}
// Go To Add Page
Row customButtonGoToAddPage(BuildContext context, String url) {
  return Row(
    mainAxisAlignment: MainAxisAlignment.end,
    crossAxisAlignment: CrossAxisAlignment.start,
    children: <Widget>[
      FractionalTranslation(
        translation: Offset(-0.2, -0.6),
        child: Align(
          child: MaterialButton(
              minWidth: 30.0,
              height: 60,
              textColor: Colors.green[500],
              color: Colors.white,
              child: Icon(
                Icons.add,
                size: 30,
              ),
              onPressed: () {
                Navigator.of(context).pushNamed(url);
              },
              shape: new RoundedRectangleBorder(
                  borderRadius: new BorderRadius.circular(100.0))),
          alignment: FractionalOffset(0.5, 0.0),
        ),
      ),
    ],
  );
}

// **** Page Head

ClipPath eventHeader(key) {
  return ClipPath(
    clipper: BottomWaveClipper(),
    child: Container(
      decoration: BoxDecoration(
        gradient: getAppGradient(),
      ),
      height: 130,
      padding: EdgeInsets.only(top: 25.0, bottom: 5.0),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.stretch,
        children: <Widget>[
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            crossAxisAlignment: CrossAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.fromLTRB(20, 30, 0, 0),
                child: GestureDetector(
                  onTap: () => {key.currentState.openDrawer()},
                  child: Icon(
                    Icons.menu,
                    color: Colors.white,
                  ),
                ),
              ),
              Column(
                children: <Widget>[
                  headerTitleRow("EVENTS"),
                  headerSubtitleRow("Need More Control? Create An Event"),
                ],
              ),
              Padding(
                padding: EdgeInsets.fromLTRB(40, 20, 5, 0),
              ),
            ],
          ),
        ],
      ),
    ),
  );
}

// Main App Wave Clipper
class BottomWaveClipper extends CustomClipper<Path> {
  @override
  Path getClip(Size size) {
    var path = new Path();
    path.lineTo(0.0, size.height - 0);

    // var firstControlPoint = Offset(size.width / 4, size.height);
    // var firstEndPoint = Offset(size.width / 2.25, size.height - 30.0);
    // path.quadraticBezierTo(firstControlPoint.dx, firstControlPoint.dy,
    //     firstEndPoint.dx, firstEndPoint.dy);

    var secondControlPoint =
        Offset(size.width - (size.width / 2), size.height - 40);
    var secondEndPoint = Offset(size.width, size.height - 0);
    path.quadraticBezierTo(secondControlPoint.dx, secondControlPoint.dy,
        secondEndPoint.dx, secondEndPoint.dy);

    path.lineTo(size.width, size.height - 0);
    path.lineTo(size.width, 0.0);
    path.close();

    return path;
  }

  @override
  bool shouldReclip(CustomClipper<Path> oldClipper) => false;
}