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

Другие вопросы по тегам