当前位置: 首页 > 知识库问答 >
问题:

飘动中带有红色边框的自定义红色按钮

喻选
2023-03-14

我想创建一个像图片一样的按钮。我是颤动的初学者,所以我不知道如何开始。让我补充一点,我想为按钮添加一个红色发光效果。

共有3个答案

宋原
2023-03-14

这应该更灵活一点,允许定制颜色、阴影、亮暗背景,当然还有文本。

另外,这不使用容器。你不能让容器恒定,所以我们很多人现在都试图避免它们:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: const Center(
        child: CustomButton(
          // Places a black or white backing behind the inside, translucent color.
          backgroundIsDark: true,
          // The color of everything.
          color: Colors.red,
          // The shadow *outside* the border.
          shadowSize: 2.0,
          text: 'Test',
        ),
      ),
    );
  }
}

class CustomButton extends StatelessWidget {
  const CustomButton({
    Key? key,
    required this.backgroundIsDark,
    required this.shadowSize,
    required this.text,
    required this.color,
  }) : super(key: key);

  final double shadowSize;
  final String text;
  final Color color;
  final bool backgroundIsDark;

  @override
  Widget build(BuildContext context) {
    return InkWell(
      onTap: () {
        // TODO Implement Me.
      },
      radius: 16.0,
      child: DecoratedBox(
        decoration: BoxDecoration(
          color: backgroundIsDark ? Colors.black : Colors.white,
          borderRadius: BorderRadius.circular(8),
        ),
        child: DecoratedBox(
          decoration: BoxDecoration(
            border: Border.all(
              color: color,
              width: 4,
            ),
            borderRadius: BorderRadius.circular(8),
            boxShadow: [
              BoxShadow(
                color: color.withOpacity(0.4),
                blurRadius: shadowSize,
                spreadRadius: shadowSize,
                offset: const Offset(0.0, 0.0),
              ),
            ],
          ),
          child: Padding(
            padding: const EdgeInsets.symmetric(
              horizontal: 16.0,
              vertical: 8.0,
            ),
            child: Text(
              text,
              style: TextStyle(color: color),
            ),
          ),
        ),
      ),
    );
  }
}
章盛
2023-03-14

您可以将< code>InkWell与自定义样式一起使用,下面是一个示例

InkWell(
  onTap: (){
    //YOUR FUNCTION
  },
  radius: 16.0,
  child: Container(
    padding: const EdgeInsets.symmetric(
      horizontal: 16.0,
      vertical: 8.0,
    ),
    decoration: BoxDecoration(
      border: Border.all(color: Colors.red, width: 2),
      borderRadius: BorderRadius.circular(12),
    ),
    child: Text('Text', style: TextStyle(color: Colors.red),),
  ),
),
通远
2023-03-14

尝试以下代码

OutlinedButton(
      onPressed: () {
        print('button pressed');
        //write your onPressed function here
      },
      child: Text(
        'TEXT',
        style: TextStyle(
          fontSize: 40,
        ),
      ),
      style: OutlinedButton.styleFrom(
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(
            20,
          ),
        ),
        primary: Colors.red,
        backgroundColor: Colors.red.shade100,
        fixedSize: Size(200, 100),
        side: BorderSide(
          width: 10.0,
          color: Colors.red,
        ),
      ),
    ),
 类似资料:
  • 我正在尝试使用IBMCloud中的红色节点。我在平台上有一个Lite帐户,但目前没有安装任何应用程序。当我在安装后尝试部署它时,我得到: 我用了128来分配内存。在日志中,我得到这个错误消息: 如何在不创建其他帐户的情况下更正此错误?

  • 我在Project Explorer中的Intellij Idea文件名都有一个红色的小圆圈,上面写着“J”。那代表什么?

  • 我正在处理一个网页,我想要自定义样式的标记。所以对于CSS,我说:。现在它在safari中工作得很完美,但在chrome中,当我点击其中一个按钮时,它在周围放了一个讨厌的蓝色边框。我以为或会起作用,但两者都不起作用。有什么想法吗? 这是它在被点击之前的样子(以及我希望它在被点击之后仍然照看的样子): 这就是我说的边界: 以下是我的CSS:

  • 我想改变按钮的背景颜色,当悬停在它上面-所以,如果不悬停在按钮上,它应该是蓝色的,如果悬停它应该改变为红色。 我尝试的是:和(基于animation_slider的选项)。两者都不起作用——此外,我搜索了css选项,但也找不到。你有一个想法如何访问按钮悬停颜色,也许还有悬停字体颜色?谢谢! 编辑:正如这里建议的那样,我尝试了这个命令,但也没用。

  • 我正在努力修改MUI next(v1)中的按钮颜色。 我该如何设置muitheme,使其行为与bootstrap相似,这样我就可以用“btn危险”表示红色,“btn成功”表示绿色? 我尝试了自定义,但它不能正常工作(悬停颜色不会改变),而且似乎是重复的。我有什么选择?

  • 我有一个表单,它有两个文本区域和引导用户界面星级,以及它们的标签文本。我已将所有文本区域和星级设置为必填字段。 当我点击提交按钮时,我想将文本区域()/星级()的所有标签文本更改为红色字体,并在所有无效字段的文本区域周围设置红色边框。下面是我的代码,这是不工作。 我希望以下情况发生时,我点击保存按钮没有输入任何东西。你能告诉我如何实现这三项吗? 将无效文本区域周围的边框更改为红色 提前感谢您的帮助