Как определить, что пользователь перестал печатать в TextField? - PullRequest
1 голос
/ 30 июня 2019

Я использую TextField, при котором onChanged функция

Я звоню своему коду, но сейчас проблема заключается в том, что код выполняется каждый раз, когда вводится или удаляется новое слово.

я ищу как распознать, когда пользователь прекратил печатать .

означает добавление некоторой задержки или что-то в этом роде.

Я попытался добавитьdelay также с использованием функции Future.delayed, но эта функция также выполняется n раз.

TextField(
   controller: textController,
   onChanged: (val) {
            if (textController.text.length > 3) {
              Future.delayed(Duration(milliseconds: 450), () {
                 //code here
              });
            }
            setState(() {});
          },
 )

1 Ответ

0 голосов
/ 30 июня 2019

Благодаря @pskink

я смог добиться нужной мне функциональности.

импорт пакета stream_transform в вашем pubspec.yaml

stream_transform: ^0.0.19

import 'package:stream_transform/stream_transform.dart';

StreamController<String> streamController = StreamController();

@override
void initState() {
  streamController.stream
    .transform(debounce(Duration(milliseconds: 400)))
    .listen((s) => _validateValues());

  super.initState();
}

//function I am using to perform some logic
_validateValues() {
  if (textController.text.length > 3) {
     // code here
  }else{
     // some other code here
  }
}

Код TextField

TextField(
   controller: textController,
   onChanged: (val) {
        streamController.add(val);
     },
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...