Flutter开发:实现TextField点击与TextButton激活功能一致及搜索记录页面
把两个组件的逻辑抽成单独的函数,就能让它们触发同样的操作,代码修改如下:
首先定义共享的处理函数,把原来TextButton里要执行的逻辑写在这里:
void _handleActivate() { // 这里写具体的业务逻辑,比如跳转搜索记录页面、触发搜索操作等 // 示例:Navigator.push(context, MaterialPageRoute(builder: (context) => SearchHistoryPage())); }
然后修改TextField和TextButton的回调,都调用这个函数:
TextField( onTap: _handleActivate, // 点击搜索栏时触发共享逻辑 decoration: InputDecoration( hintText: "Please Input Data", hintStyle: TextStyle( fontFamily: 'Source Han Sans KR', fontSize: 14, color: const Color(0xffbcbcbc), letterSpacing: -0.35000000000000003, fontWeight: FontWeight.w300, ), border: InputBorder.none, prefixIcon: Icon(Icons.search)), ), TextButton( onPressed: _handleActivate, // 点击激活按钮时触发同样的逻辑 child: Text( 'Activate', style: TextStyle( fontFamily: 'Source Han Sans KR', fontSize: 16, color: const Color(0xff191919), letterSpacing: -0.4, ), softWrap: false, ))
这样不管是点击搜索栏还是激活按钮,都会执行完全一样的操作。后续要调整逻辑的话,只需要修改_handleActivate函数,不用改动两个组件的回调,维护起来更方便。
内容的提问来源于stack exchange,提问作者김용석
相关产品推荐
相关产品推荐

