提交 4b9d90a9 authored 作者: shixiaochen's avatar shixiaochen

1、SearchAppBar增加焦点回调,设置右侧按钮属性

上级 6aadaa80
...@@ -15,6 +15,9 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget { ...@@ -15,6 +15,9 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget {
final Color? inputTextColor; final Color? inputTextColor;
final Color? hintTextColor; final Color? hintTextColor;
final Color? searchTextColor; final Color? searchTextColor;
final Function? onFocusListener;
final String? rightText;
final Function? onRightBtnCallback;
const SearchAppBar({ const SearchAppBar({
Key? key, Key? key,
...@@ -27,6 +30,9 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget { ...@@ -27,6 +30,9 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget {
this.inputTextColor, this.inputTextColor,
this.hintTextColor, this.hintTextColor,
this.searchTextColor, this.searchTextColor,
this.onFocusListener,
this.rightText,
this.onRightBtnCallback,
}) : super(key: key); }) : super(key: key);
@override @override
...@@ -37,14 +43,24 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget { ...@@ -37,14 +43,24 @@ class SearchAppBar extends StatefulWidget implements PreferredSizeWidget {
} }
class _SearchAppBarState extends State<SearchAppBar> { class _SearchAppBarState extends State<SearchAppBar> {
final searchInfoController = TextEditingController(); final _searchInfoController = TextEditingController();
final searchFocusNode = FocusNode(); final _searchFocusNode = FocusNode();
@override
void initState() {
_searchFocusNode.addListener(() {
if (widget.onFocusListener != null) {
widget.onFocusListener!(_searchFocusNode.hasFocus);
}
});
super.initState();
}
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return KeyboardActions( return KeyboardActions(
config: config:
KeyBoardUtils.getKeyboardActionsConfig(context, [searchFocusNode]), KeyBoardUtils.getKeyboardActionsConfig(context, [_searchFocusNode]),
tapOutsideBehavior: TapOutsideBehavior.opaqueDismiss, tapOutsideBehavior: TapOutsideBehavior.opaqueDismiss,
child: AppBar( child: AppBar(
backgroundColor: widget.backgroundColor, backgroundColor: widget.backgroundColor,
...@@ -68,13 +84,13 @@ class _SearchAppBarState extends State<SearchAppBar> { ...@@ -68,13 +84,13 @@ class _SearchAppBarState extends State<SearchAppBar> {
Expanded( Expanded(
child: TextField( child: TextField(
maxLines: 1, maxLines: 1,
focusNode: searchFocusNode, focusNode: _searchFocusNode,
style: TextStyle( style: TextStyle(
fontSize: 14, fontSize: 14,
color: widget.inputTextColor ?? color: widget.inputTextColor ??
const Color(0xFF000000)), const Color(0xFF000000)),
textInputAction: TextInputAction.search, textInputAction: TextInputAction.search,
controller: searchInfoController, controller: _searchInfoController,
onSubmitted: (value) => _search(), onSubmitted: (value) => _search(),
decoration: InputDecoration( decoration: InputDecoration(
contentPadding: const EdgeInsets.symmetric( contentPadding: const EdgeInsets.symmetric(
...@@ -96,12 +112,12 @@ class _SearchAppBarState extends State<SearchAppBar> { ...@@ -96,12 +112,12 @@ class _SearchAppBarState extends State<SearchAppBar> {
), ),
), ),
InkWell( InkWell(
onTap: () => _search(), onTap: () => widget.onRightBtnCallback ?? _search(),
child: Container( child: Container(
width: 60.0, width: 60.0,
alignment: Alignment.center, alignment: Alignment.center,
child: Text( child: Text(
"搜索", widget.rightText ?? "搜索",
style: TextStyle( style: TextStyle(
color: widget.searchTextColor ?? const Color(0xFFFFFFFF), color: widget.searchTextColor ?? const Color(0xFFFFFFFF),
fontSize: 14.0), fontSize: 14.0),
...@@ -116,7 +132,7 @@ class _SearchAppBarState extends State<SearchAppBar> { ...@@ -116,7 +132,7 @@ class _SearchAppBarState extends State<SearchAppBar> {
/// 校验 /// 校验
bool _checkInfo() { bool _checkInfo() {
if (isNullOrEmpty(getControllerString(searchInfoController))) { if (isNullOrEmpty(getControllerString(_searchInfoController))) {
ToastUtil.showToast("请输入搜索内容"); ToastUtil.showToast("请输入搜索内容");
return false; return false;
} }
...@@ -128,7 +144,7 @@ class _SearchAppBarState extends State<SearchAppBar> { ...@@ -128,7 +144,7 @@ class _SearchAppBarState extends State<SearchAppBar> {
if (_checkInfo()) { if (_checkInfo()) {
KeyBoardUtils.hideKeyboard(); KeyBoardUtils.hideKeyboard();
if (widget.onCallback != null) { if (widget.onCallback != null) {
widget.onCallback!(getControllerString(searchInfoController)); widget.onCallback!(getControllerString(_searchInfoController));
} }
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论