Flutter 颤振-如何在焦点的TextFormField中添加阴影
在颤振中聚焦时,如何在TextFormField中添加阴影?我希望字段具有以下外观: 到目前为止,我在对焦时成功地应用了边界,但我看不到任何应用阴影的选项:Flutter 颤振-如何在焦点的TextFormField中添加阴影,flutter,flutter-widget,Flutter,Flutter Widget,在颤振中聚焦时,如何在TextFormField中添加阴影?我希望字段具有以下外观: 到目前为止,我在对焦时成功地应用了边界,但我看不到任何应用阴影的选项: TextFormField( decoration: InputDecoration( fillColor: Colors.white, hoverColor: Colors.white, filled: true, enabledBorder: OutlineInputBorder(bo
TextFormField(
decoration: InputDecoration(
fillColor: Colors.white,
hoverColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1))),
);
有没有关于如何获得这种效果的想法?试试这个:
Container(
decoration: BoxDecoration(
boxShadow: [new BoxShadow(
color: Colors.black,
blurRadius: 5.0, // You can set this blurRadius as per your requirement
),]
),
child: TextFormField(
decoration: InputDecoration(
fillColor: Colors.white,
hoverColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1))),
),
),
试试这个:
Container(
decoration: BoxDecoration(
boxShadow: [new BoxShadow(
color: Colors.black,
blurRadius: 5.0, // You can set this blurRadius as per your requirement
),]
),
child: TextFormField(
decoration: InputDecoration(
fillColor: Colors.white,
hoverColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.grey, width: 1))),
),
),
重要提示:使用表单小部件包装文本字段并分配_formKey
它有助于防止在设置状态后关闭键盘
完整示例:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: Home(),
),
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
static GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
FocusNode focusNode;
@override
void initState() {
super.initState();
focusNode = FocusNode();
focusNode.addListener(() => setState(() {}));
}
@override
Widget build(BuildContext context) {
return AnimatedContainer(
duration: Duration(seconds: 5),
margin: const EdgeInsets.all(16),
decoration: focusNode.hasFocus ? BoxDecoration(boxShadow: [BoxShadow(blurRadius: 6)]) : null,
child: Form(
key: _formKey,
child: TextFormField(
focusNode: focusNode,
decoration: InputDecoration(
fillColor: Colors.white,
hoverColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(borderSide: BorderSide(color: Colors.grey, width: 1))),
),
),
);
}
}
重要提示:使用表单小部件包装文本字段并分配_formKey
它有助于防止在设置状态后关闭键盘
完整示例:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(),
body: Home(),
),
);
}
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
static GlobalKey<FormState> _formKey = new GlobalKey<FormState>();
FocusNode focusNode;
@override
void initState() {
super.initState();
focusNode = FocusNode();
focusNode.addListener(() => setState(() {}));
}
@override
Widget build(BuildContext context) {
return AnimatedContainer(
duration: Duration(seconds: 5),
margin: const EdgeInsets.all(16),
decoration: focusNode.hasFocus ? BoxDecoration(boxShadow: [BoxShadow(blurRadius: 6)]) : null,
child: Form(
key: _formKey,
child: TextFormField(
focusNode: focusNode,
decoration: InputDecoration(
fillColor: Colors.white,
hoverColor: Colors.white,
filled: true,
enabledBorder: OutlineInputBorder(borderSide: BorderSide.none),
focusedBorder: OutlineInputBorder(borderSide: BorderSide(color: Colors.grey, width: 1))),
),
),
);
}
}
您可以尝试在材质中包装TextFormField并更改材质的elevation@Ovidiu这种方法的问题是,即使小部件没有聚焦,我也会得到阴影,我不希望这样。仅在聚焦输入时应用阴影。无论如何,谢谢。你可以通过它的高度来控制材质的阴影。高程为0将导致没有阴影。在TextFormField的FocusNode上使用侦听器在字段聚焦时更改材质的高程-我猜您已经在使用相同的机制更改边框。您可以尝试在材质中包装TextFormField并更改材质的高程elevation@Ovidiu这种方法的问题是我会得到即使小部件没有聚焦,我也不想看到阴影。仅在聚焦输入时应用阴影。无论如何,谢谢。你可以通过它的高度来控制材质的阴影。高程为0将导致没有阴影。在TextFormField的FocusNode上使用侦听器,在聚焦字段时更改材质的高程-我猜您已经在使用相同的机制更改边框。谢谢您的回答。问题是,即使输入没有聚焦,阴影仍然存在,只有当它聚焦时,我才需要它。@JuanCarlosMendoza检查一下这个,谢谢你的回答。问题是即使输入没有聚焦,阴影仍然存在,我只需要在它获得聚焦时才需要它。@JuanCarlosMendoza检查这一个,但当出现错误时,boxshadow也会在errortext后面显示。那么你能给出解决方案吗?谢谢,但当出现错误时,boxshadow也会显示在errortext后面。那么你能给出解决方案吗?非常感谢。