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

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

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