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

时间:2020-06-29 22:10:26

标签: flutter textfield

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

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

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

VALUES ('$username', '".md5($password)."', '$email', 'datetime', '$ref')";
        $result = mysqli_query($conn, $query);
        if($result){   
                Echo "Registration complete!!!";
                include 'login.php';                
        }
    }else{

但是我还在接壤吗?以下是部分图片。 “请输入!”字段使用主题默认值,而“问题”字段是我要覆盖的主题。

enter image description here

1 个答案:

答案 0 :(得分:1)

使用Theme小部件包装您要覆盖的小部件,并为data属性放置一个新的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。