Flutter - если нажать Textbutton, чтобы активировать TextButton
Моя проблема Мне нужна страница записи поиска
я хочу функцию
Я сделал панель поиска с TextField,
Я надеюсь, что функция ontap в TextField работает так же, как и пусковая кнопка TextButton.
Код
TextField(
onTap: () {},
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: () {
},
child: Text(
'Activate',
style: TextStyle(
fontFamily: 'Source Han Sans KR',
fontSize: 16,
color: const Color(0xff191919),
letterSpacing: -0.4,
),
softWrap: false,
))
2 ответа
В этом коде, если в текстовом поле есть данные, кнопка будет активной.
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final textController = TextEditingController();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Row(
children: [
Expanded(
child: TextField(
onChanged: (value) {
setState(() {});
},
controller: textController,
decoration: InputDecoration(
hintText: "Please Input Data",
hintStyle: TextStyle(
fontFamily: 'Source Han Sans KR',
fontSize: 14,
color: Color(0xffbcbcbc),
letterSpacing: -0.35000000000000003,
fontWeight: FontWeight.w300,
),
border: InputBorder.none,
prefixIcon: Icon(Icons.search)),
),
),
TextButton(
onPressed: textController.text.isEmpty
? null
: () {
// your code here
},
child: Text(
'Activate',
style: TextStyle(
fontFamily: 'Source Han Sans KR',
fontSize: 16,
color: textController.text.isEmpty ? Colors.grey : Color(0xff191919),
letterSpacing: -0.4,
),
softWrap: false,
),
),
],
),
),
);
}
}
Вам может понравитьсяCupertinoSearchTextField()
виджет.
Вы можете использоватьTextEditingController
и использовать его на
TextField(
controller: controller,
в то время как вы хотите выполнить поиск, получить текст сcontroller.text