У меня есть страница, которая будет отображать модальный нижний лист, когда я нажимаю кнопку. В модальном нижнем листе у него есть поле Pinput, в которое я могу вводить значения. Однако, когда я нажимаю клавишу Backspace, он удаляет 2 символа вместо 1. Кто-нибудь знает, в чем проблема, поскольку консоль ничего не показывает. Ниже приведены коды для модального нижнего листа.
_showCouponDetails(String coupon, bool couponStatus){
int shopPinCode;
int pinCode;
final FocusNode _pinPutFocusNode = FocusNode();
final TextEditingController _pinPutController = TextEditingController();
return showModalBottomSheet(
isScrollControlled: true,
context: context,
builder:(BuildContext context) =>
GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(FocusNode());
},
child: Container(
width: screenWidth,
color: Colors.white,
child: Column(
mainAxisSize: MainAxisSize.max,
mainAxisAlignment: MainAxisAlignment.start,
children: [
SizedBox(height: 24),
Padding(
padding: EdgeInsets.symmetric(horizontal: 10),
child: Text(coupon,
style: TextStyle(
fontSize: 25,
fontWeight: FontWeight.bold
)),
),
couponStatus? Text(''):Image.asset('images/Redeemed.png', width: 100, height: 100),
Center(child:
Text('Expires on 31/12/2020')),
Container(
height: 100,
width: screenWidth*0.8,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: Colors.grey[200]
),
child: Padding(
padding: EdgeInsets.all(10),
child: Center(
child: Column(
children: [
Text('Please ask the workshop to enter pin.'),
SizedBox(height: 10),
PinPut(
fieldsCount: 5,
focusNode: _pinPutFocusNode,
controller: _pinPutController,
eachFieldHeight: 30,
eachFieldWidth: 30,
selectedFieldDecoration: BoxDecoration(
border: Border.all(color: Colors.purple),
borderRadius: BorderRadius.circular(15)
),
followingFieldDecoration: BoxDecoration(
border: Border.all(color: Colors.purple),
borderRadius: BorderRadius.circular(15),
),
submittedFieldDecoration: BoxDecoration(
border: Border.all(color: Colors.purple),
borderRadius: BorderRadius.circular(15),
),
onChanged: (_pinPutController){
if (_pinPutController.isNotEmpty)
pinCode = int.parse(_pinPutController);
print (pinCode);
},
),
]
)
),
),
),
Spacer(),
Padding(
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
InkWell(
onTap: () {
},
child: Container(
height: screenHeight*0.05,
width: screenWidth *0.4,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
color: kPrimaryColor
),
child: Center(child: Text('Redeem', style: TextStyle(fontWeight: FontWeight.bold,color: Colors.white, fontSize: 15))),
),
),
InkWell(
onTap: (){
Navigator.pop(context);
},
child: Container(
height: screenHeight*0.05,
width: screenWidth *0.4,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(15),
border: Border.all(color: Colors.black),
color: Colors.white
),
child: Center(child: Text('Cancel', style: TextStyle(fontWeight: FontWeight.bold, fontSize: 15))),
),
),
],
),
)
],
),
),
),
);
}
Обновления: Изображение включено. На картинке я набрал 1,2 и 3. Всякий раз, когда я нажимаю клавишу Backspace, она удаляет 2 и 3 (рисунок 2). На рисунке 3 консоль выводит число дважды.
Вы говорите о добавлении числа и обратном отступе внутри числового поля? Ну, это работает нормально во время моей компиляции. Если нет, не могли бы вы добавить скриншот проблемы.
Привет, Рой, во время моей компиляции приложение работает отлично. Если проблема все еще сохраняется. Пожалуйста, проверьте, если: - 1. Обновлена до последней версии библиотека выводов (я использовал последнюю) или любую другую библиотеку. 2. Попробуйте запустить приложение на физическом устройстве (это может сработать)
Спасибо. Я пытался загрузить на устройство, но все равно. Я также обновился до последней библиотеки, но все еще сталкиваюсь с той же проблемой.
В моем коде. Если я удерживаю кнопку возврата, она удаляет только один символ. Я хочу сделать так, чтобы когда мы удерживали клавишу возврата, все символы начинали удаляться, но я могу удалить только один символ. как я могу этого добиться?
Я исправил эту проблему, изменив канал флаттера. Я использовал бета-версию канала флаттера, и, по-видимому, этот пробел — ошибка. После переключения на стабильный канал флаттера все было нормально.
Чтобы проверить свой флаттер-канал, введите в терминале следующее: флаттер --версия
Чтобы изменить канал флаттера, введите в терминале следующее: флаттер мастер канала
Здравствуйте, да, я говорю о номере внутри числового поля. Добавил 2 фото проблемы.