Dart 如何更改文本字段下划线颜色?

Dart 如何更改文本字段下划线颜色?,dart,flutter,Dart,Flutter,我对飞镖和飞镖都是新手。目前,在我的一个个人项目中使用它 decoration: InputDecoration( enabledBorder: UnderlineInputBorder( borderSide: BorderSide(color: Colors.cyan), ), focusedBorder: Un

我对飞镖和飞镖都是新手。目前,在我的一个个人项目中使用它

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
在我所有的表单中,textField的下划线都显示为蓝色。我想把它换成其他颜色。我使用的代码就像

new TextField(
  controller: this._emailController,
  decoration: new InputDecoration(
      hintText: "Enter your email",
      labelText: "Email",
      labelStyle: new TextStyle(
          color: const Color(0xFF424242)
      )
  ),

),
decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
无法理解如何实现这一点

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),

注:我知道这里有一个类似的问题。但是,在那里也没有完全解决。另外,还有一个链接看起来和我的类似,但实际上是属于Android开发的,它使用的是JAVA,而不是我在Android应用程序开发中使用的DART(flatter)。因此,请不要对这些链接感到困惑。

**请参阅下面的更新或**

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
合乎逻辑的答案是使用InputBorder,特别是,并将其作为边框传递给inputdecorator。但是,所有这一切只是告诉InputDecorator is是否应该使用下划线或您指定的任何其他内容

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
实际颜色基于主题-来源:

Color _getActiveColor(ThemeData themeData) {
  if (isFocused) {
    switch (themeData.brightness) {
      case Brightness.dark:
        return themeData.accentColor;
      case Brightness.light:
        return themeData.primaryColor;
    }
  }
  return themeData.hintColor;
}
decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
因此,要更改颜色,请执行以下操作(或为整个应用程序指定主题):

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
更新:

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
现在,您可以按照预期的方式完成此操作

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
装饰:输入装饰(
enabledBorder:UnderlineInputBorder(
borderSide:borderSide(颜色:颜色),
),  
FocusedOrder:下划线输入边框(
borderSide:borderSide(颜色:颜色),
),
边框:下划线输入边框(
borderSide:borderSide(颜色:颜色),
),
)

刚用过-:

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),

它适用于我:)

要更改整个应用程序的颜色,请使用的属性

decoration: InputDecoration(        
              enabledBorder: UnderlineInputBorder(      
                      borderSide: BorderSide(color: Colors.cyan),   
                      ),  
              focusedBorder: UnderlineInputBorder(
                      borderSide: BorderSide(color: Colors.cyan),
                   ),  
             ),
  • 要仅在输入处于焦点时使用颜色(即单击并准备键入):

    decoration: InputDecoration(        
                  enabledBorder: UnderlineInputBorder(      
                          borderSide: BorderSide(color: Colors.cyan),   
                          ),  
                  focusedBorder: UnderlineInputBorder(
                          borderSide: BorderSide(color: Colors.cyan),
                       ),  
                 ),
    
    MaterialApp(
    ...
    主题:主题数据(
    inputDecorationTheme:inputDecorationTheme(
    FocusedOrder:下划线输入边框(
    borderSide:borderSide(颜色:Colors.red)
    ),
    )
    )
    )
    
  • 始终使用颜色(即使在不对焦时),请同时设置
    enabledBorder
    border

    decoration: InputDecoration(        
                  enabledBorder: UnderlineInputBorder(      
                          borderSide: BorderSide(color: Colors.cyan),   
                          ),  
                  focusedBorder: UnderlineInputBorder(
                          borderSide: BorderSide(color: Colors.cyan),
                       ),  
                 ),
    
    MaterialApp(
    ...
    主题:主题数据(
    inputDecorationTheme:inputDecorationTheme(
    FocusedOrder:下划线输入边框(
    borderSide:borderSide(颜色:Colors.red)
    ),
    enabledBorder:UnderlineInputBorder(
    borderSide:borderSide(颜色:Colors.red),
    ),
    边框:下划线输入边框(
    borderSide:borderSide(颜色:Colors.red),
    ),
    )
    )
    )
    

    • 需要更改三个边框

      decoration: InputDecoration(        
                    enabledBorder: UnderlineInputBorder(      
                            borderSide: BorderSide(color: Colors.cyan),   
                            ),  
                    focusedBorder: UnderlineInputBorder(
                            borderSide: BorderSide(color: Colors.cyan),
                         ),  
                   ),
      
        enabledBorder: OutlineInputBorder(
                  borderSide: BorderSide(color: _type.color),
                ),
        focusedBorder: OutlineInputBorder(
              borderSide: BorderSide(color: _type.color),
        ),
        border:
          OutlineInputBorder(borderSide: BorderSide(color: _type.color)),
      

      使用TextField中的FocusedOrder属性可以更改下划线颜色,如:
      focusedOrder:new UnderlineInputBorder(borderSide:new borderSide(颜色:Colors.black),

      您可以在此处找到相同的问题:[和此处][可能是重复的我已经检查了第一个链接。如果你检查了那一个,那么这个问题也没有完全解决。在第二个链接中,这属于Android开发的JAVA not Flatter(DART)。所以基本上,我帮不了我。我尝试了
      UnderlineInputDecorator
      ,但无法解决我的问题。啊,好吧。如果有机会,我会看一看并添加一个代码示例,如果没有其他人比我先找到它。没问题。让我看看我还能做些什么。好了,将它更改为修复它。但正如我简短地提到的,您可能最好是为整个应用程序指定主题,然后在需要的任何地方使用它-这样,如果你愿意,你可以更改整个主题=)哦,伙计,我从Gitter那里得到了一个关于将所有内容包装到主题中的答案&它现在起作用了。我不知道所有这些细节。但是,逐步学习。谢谢你的帮助。我想你也应该尝试材质应用程序主题设置。它们可能对整个颜色系统非常有用。@GJJ你能给我任何来源来找到解决方案吗。我如何在
      输入装饰上应用
      enabledBorder
      。折叠的
      你的答案应该是最好的答案。谢谢你如何只做一个边框(顶部、左侧、右侧或底部)
      
      decoration: InputDecoration(        
                    enabledBorder: UnderlineInputBorder(      
                            borderSide: BorderSide(color: Colors.cyan),   
                            ),  
                    focusedBorder: UnderlineInputBorder(
                            borderSide: BorderSide(color: Colors.cyan),
                         ),  
                   ),