首页 > 解决方案 > 飞溅在容器/FlatButton 之外流动 - Flutter

问题描述

我试图让飞溅与我的 Container 具有相同的形状,该 Container 有一个 FlatButton 作为它的孩子。

按下时,飞溅当前填充不同的形状,如下所示:

在此处输入图像描述

我的小部件代码如下:

import 'package:flutter/material.dart';

class RoundedButton extends StatelessWidget {

const RoundedButton( {this.buttonColor, this.buttonTitle, @required this.onPressed});

  final Color buttonColor;
  final String buttonTitle;
  final Function onPressed;

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: EdgeInsets.symmetric(vertical: 16.0),
      height: 42.0,
      width: 200.0,
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(30.0),
        color: buttonColor,
      ),
      child: FlatButton(
        onPressed: onPressed,
        child: Text(
          buttonTitle,
          style: TextStyle(
              color: Colors.white
          ),
        ),
      ),
    );
  }
}

标签: androidiosflutterdartmobile-development

解决方案


您可以使用ClipRRect小部件来剪辑带有圆角的底层小部件,并通过使用borderRadius属性并传递与radius父小部件相同的属性Container,即,包裹FlatButtonwithClipRRect以达到所需的效果。下面的示例工作代码:

body: Container(
      margin: EdgeInsets.symmetric(vertical: 16.0),
      height: 42.0,
      width: 200.0,
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(30.0),
        color: Colors.red,
      ),
      child: ClipRRect(
      borderRadius: BorderRadius.circular(30),  
      child: FlatButton(
        onPressed: () {
          print('pressed');
        },
        child: Text(
          'Send',
          style: TextStyle(
              color: Colors.white
          ),
        ),
      ),
      )
    ),

希望这能回答你的问题。


推荐阅读