在 BoxDecoration 上为容器添加 labelText(作为 TextField)

use*_*956 2 flutter

TextField 有一种很好的方法可以在其框装饰上放置文本标签。

出去

和:

TextField(
        onTap: onTap,
        controller: controller,
        decoration: InputDecoration(
          labelText: "XP",
          border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(50.0),
          ),
        ));
Run Code Online (Sandbox Code Playgroud)

有没有办法为容器的其他 BoxDecoration 实现相同的目标?例如,我想指定标签“XP”:

        Container(
          decoration: BoxDecoration(
            borderRadius: BorderRadius.all(Radius.circular(5)),
            border: Border.all(color: color, width: 2.0),
            labelText: Text("XP"),   // No such attribute
          ),
          child: child,
        ),
Run Code Online (Sandbox Code Playgroud)

...但 Flutter 不提供 labelText for BoxDecoration(only for InputDecoration)。

Lux*_*uxa 12

您可以使用 InputDecorator

Container(
  child: InputDecorator(
    decoration: InputDecoration(
      labelText: 'XP',
      border: OutlineInputBorder(
        borderRadius: BorderRadius.circular(10.0),
      ),
    ),
    child: Text('content goes here'),
  ),
)
Run Code Online (Sandbox Code Playgroud)


小智 7

我会选择 Luxiriox
的 ans ,只需在 enableBorder 中更改一次边界

Container(
  child: InputDecorator(
    decoration: InputDecoration(
      labelText: 'XP',
      enableBorder: OutlineInputBorder(
        borderRadius: BorderRadius.circular(10.0),
      ),
    ),
    child: Text('content goes here'),
  ),
)
Run Code Online (Sandbox Code Playgroud)


小智 2

如何像 TextField 一样在 Container 的 BoxDecoration 上添加 MabelText:

遇到这个并认为它可能会有所帮助。使用 TextField 并将 readOnly 设置为“True”;// 这将禁用点击功能,使用户无法更改其中的项目,但您可以根据需要显示结果。

在我的示例中,我在无状态小部件中设置了结果,以从方法返回结果。

class TextField_resultBx extends StatelessWidget {
  const TextField_resultBx({
    Key? key,
    required this.boxResultTitle,
    required this.borderLabelTextBox,
    required this.displayBoxResult,
  }) : super(key: key);

  final String boxResultTitle;
  final String borderLabelTextBox;
  final String displayBoxResult;

  @override
  Widget build(BuildContext context) {
    return Container(
      margin: const EdgeInsets.symmetric(vertical: 5, horizontal: 10),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          Text(
            boxResultTitle,
            textScaleFactor: 1.2,
            softWrap: true,
            style: const TextStyle(
              fontWeight: FontWeight.bold,
            ),
          ),
          const SizedBox(height: 10),
          // Results Box 1:
          TextField(
            // enabled: true,
            readOnly: true,
            style: const TextStyle(
              color: kCalLabelColor,
            ),
            decoration: InputDecoration(
              enabled: true,
              contentPadding: const EdgeInsets.all(12.0),
              floatingLabelBehavior: FloatingLabelBehavior.always,
              // Border Label TextBox 1
              labelText: borderLabelTextBox,
              labelStyle: const TextStyle(
                fontWeight: FontWeight.bold,
                color: kCalLabelColor,
              ),
              hintText: displayBoxResult,

              hintMaxLines: 2,
              hintStyle: const TextStyle(
                color: Colors.black,
              ),
              enabledBorder: OutlineInputBorder(
                borderSide: kEnbBorderSide,
                borderRadius: kCalOutlineBorderRad,
              ),
              focusedBorder: kFocusedBorder,
            ),
          ),
        ],
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

容器标签 类似于文本字段标签的文本