flutter - 如何覆盖单个小部件的主题?

标签 flutter textfield

我的 Flutter 应用有主题,在 TextFields 周围添加了边框:

ThemeData(
    ...
    inputDecorationTheme: InputDecorationTheme(
        focusedBorder: OutlineInputBorder(
            borderSide: BorderSide(width: 1.0),
        ),
        enabledBorder: OutlineInputBorder(
            borderSide: BorderSide(width: 1.0),
        ),
    )

但是,我确实有一个不需要边框的 TextField,因此我尝试覆盖 TextField 中的边框:

TextField(
    decoration: InputDecoration.collapsed(
        hintText: _hintText,
        border: InputBorder.none,
      ),
    controller: _textController,
),

但我仍然得到边界?下面是部分图片。 “请输入!”字段使用主题默认值,“问题”字段是我要覆盖的字段。

enter image description here

最佳答案

Theme 包裹你想覆盖的那个小部件并为数据属性放置一个新的 ThemeData 小部件。

return MaterialApp(
  theme: ThemeData(
    primarySwatch: Colors.orange,
    visualDensity: VisualDensity.adaptivePlatformDensity,
  ),
  home: Scaffold(
    body: Column(children: [
      TextFormField(), // Takes the theme of the overall MaterialApp
      Theme(
        data: ThemeData(
          primarySwatch: Colors.blue,
        ),
        child: TextFormField(), // Takes the theme of its direct parent
      ),
    ]),
  ),
);

这个基本示例只是改变颜色,所以使用您喜欢的任何 ThemeData。

关于flutter - 如何覆盖单个小部件的主题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62647421/

相关文章:

android - Flutter Gradle 构建异常

pdf - ITextSharp - PdfPCell 中的文本字段

javascript - 根据所选选项更改文本字段

android - 如何从 jetpack compose 中的 viewModel 更改 TextField 值中的值

java - 如何在javafx中的TextArea中使用自动完成功能

flutter - 仅在图像可见时渲染图像

dart - 如何使用 Flutter 使用 GraphQL 订阅?

dart - 需要 1 个必需参数,但找到 0 个

Android 警报管理器不适用于 Flutter Project App

当按钮单击时 flutter 创建动态文本字段