import 'package:flutter/material.dart'; import 'package:zhiying_base_widget/pages/team_page/model/team_style_model.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:zhiying_base_widget/pages/team_page/notifier/team_page_notifier.dart'; import 'package:zhiying_comm/zhiying_comm.dart'; import 'package:provider/provider.dart'; class TeamInputWidget extends StatefulWidget { TeamStyleModel styleModel; TabController tabController; TeamInputWidget(this.styleModel, this.tabController); @override _TeamInputWidgetState createState() => _TeamInputWidgetState(); } class _TeamInputWidgetState extends State { TextEditingController _controller; FocusNode _focusNode; bool _showCancel = false; /// 搜索方法 void _onSearchClick() { String text = _controller?.text?.toString()?.trim(); if (!EmptyUtil.isEmpty(text) && text.length > 0) { widget?.tabController?.index = 0; Provider.of(context, listen: false).searchReset(text); } } /// 点击取消输入 void _cancel() { _controller?.clear(); } void _onChange(text) { if (!EmptyUtil.isEmpty(text)) { if (!_showCancel) { setState(() { _showCancel = true; }); } } else { if (_showCancel) { setState(() { _showCancel = false; }); } } } @override void initState() { _controller = TextEditingController(); _focusNode = FocusNode(); super.initState(); } @override void didChangeDependencies() { super.didChangeDependencies(); } @override void dispose() { _focusNode?.unfocus(); _focusNode?.dispose(); _controller?.dispose(); super.dispose(); } @override void deactivate() { super.deactivate(); _focusNode?.unfocus(); } @override Widget build(BuildContext context) { return Container( width: double.infinity, height: double.infinity, padding: const EdgeInsets.only(top: 10, left: 12.5, right: 12.5), color: Colors.white, child: Row( children: [ /// 输入框 Expanded( child: Container( height: 24, decoration: BoxDecoration( borderRadius: BorderRadius.circular(30), color: HexColor.fromHex(widget?.styleModel?.headerNoReferrerInputBgColor ?? '#F7F7F7'), ), // padding: const EdgeInsets.only(top: 5, bottom: 4.5, left: 7.5, right: 7.5), width: double.infinity, child: Row( children: [ // Container(width: 11.5, height: 11.5, color: Colors.red,), /// 查询图标 Padding( padding: const EdgeInsets.only(top: 5, bottom: 4.5, left: 7.5), child: CachedNetworkImage( imageUrl: widget?.styleModel?.searchBarLeftIcon, width: 11.5, )), Expanded( child: Container( padding: const EdgeInsets.only(top: 5, bottom: 4.5), color: Colors.transparent, child: TextField( controller: _controller, focusNode: _focusNode, onChanged: _onChange, onSubmitted: (text) => _onSearchClick(), style: TextStyle(fontSize: 11, color: HexColor.fromHex(widget?.styleModel?.headerNoReferrerInputColor ?? '#000000'), textBaseline: TextBaseline.alphabetic), decoration: InputDecoration( focusedBorder: InputBorder.none, border: InputBorder.none, focusedErrorBorder: InputBorder.none, errorBorder: InputBorder.none, disabledBorder: InputBorder.none, enabledBorder: InputBorder.none, filled: true, isDense: true, contentPadding: const EdgeInsets.only(left: 6, bottom: 0, top: 0, right: 0), fillColor: Colors.transparent, hintStyle: TextStyle(fontSize: 11, color: HexColor.fromHex(widget?.styleModel?.searchBarHideTextColor ?? '#999999'), textBaseline: TextBaseline.alphabetic), hintText: widget?.styleModel?.searchBarHideText ?? '输入需搜索的手机号/昵称', ), ), ), ), // Container(width: 15, height: 15, color: Colors.red,) /// 关闭按钮 Visibility( visible: _showCancel, child: GestureDetector( behavior: HitTestBehavior.opaque, onTap: () => _cancel(), child: Padding( padding: const EdgeInsets.only(top: 5, bottom: 4.5, right: 7.5), child: CachedNetworkImage( imageUrl: widget?.styleModel?.searchBarRightIcon, width: 11.5, ), )), ), ], ), ), ), const SizedBox(width: 8), /// 确定按钮 GestureDetector( behavior: HitTestBehavior.opaque, onTap: () => _onSearchClick(), child: Container( decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: HexColor.fromHex(widget?.styleModel?.searchBarBtnBgColor ?? '#FF4242')), padding: const EdgeInsets.only(left: 15, right: 15, bottom: 6.5, top: 6.5), child: Text( widget?.styleModel?.searchBarBtnText ?? '搜索', style: TextStyle(color: HexColor.fromHex(widget?.styleModel?.searchBarBtnTextColor ?? '#FFFFFF'), fontSize: 11), ), ), ) ], ), ); } }