2 Вопрос: Проверка поля даты во флаттере с булевыми данными

вопрос создан в Wed, May 8, 2019 12:00 AM

Я пытаюсь проверить поле даты в Flutter, но получаю эту ошибку:

При обработке жеста было выдвинуто следующее утверждение: I /flutter (6785): ошибочное утверждение: логическое выражение не должно быть нулевым

р>

  Row(
                                        mainAxisAlignment:
                                            MainAxisAlignment.spaceEvenly,
                                        children: <Widget>[
                                          RaisedButton(
                                            highlightElevation: 8,
                                            color: Colors.white,
                                            shape: RoundedRectangleBorder(
                                              borderRadius:
                                                  BorderRadius.circular(8.0),
                                            ),
                                            child: Text(
                                              selectedYear != null
                                                  ? selectedYear.toString()
                                                  : "Age Checker",
                                              style: TextStyle(
                                                  color: Colors.orange),
                                            ),
                                            onPressed: _showPicker,
                                            
                                          ),
                                          Container(
                                            width: 120,
                                            child: AnimatedBuilder(
                                              animation: animation,
                                              builder: (context, child) => FormField(
                                                builder:
                                                    (FormFieldState state) {
                                                  return InputDecorator(
                                                decoration: InputDecoration(
                                                  labelText:  'You Are '
                                                        "${animation.value.toStringAsFixed(0)}",
                                                  errorText:  state.hasError
                                                          ? state.errorText
                                                          : null,
                                                ),
                                                isEmpty: selectedYear == '',
                                                  );
                                                     },  validator: (selectedYear) => selectedYear ? null: 'rawr',
                                                 
                                              ),
                                              
                                            ),
                                          ),
                                        ],
                                      ),

Вот мои методы, помогающие рассчитать возраст и валидатор для подтверждения возраста.

 void calculateAge() {
setState(() {
  age = (2018 - selectedYear).toDouble();

  animation = Tween<double>(begin: animation.value, end: age).animate(
      CurvedAnimation(
          curve: Curves.fastOutSlowIn, parent: animationController));

  animationController.forward(from: 0.0);
});
print(age);

if (age < 21){
  ageChecker();
} else{
}

} р>

bool isValidDob (String dob) {   if (dob.isEmpty) возвращает true;

} р>

Я хочу подтвердить, что пользователю больше 21, прежде чем перейти к следующему экрану. Пожалуйста, дайте мне знать, где я ошибся.

    
0
2 ответа                              2                         

Где вы вызываете эту функцию?

bool isValidDob(String dob) { 
 if (dob.isEmpty) return true;
}

Я думаю, что эта функция вызывает ошибку, попробуйте изменить ее следующим образом

 bool isValidDob(String dob) { 
     if (dob.isEmpty){
      return true;
      }
     else{
       return false
       }
    }
    
1
2019-05-08 17: 41: 40Z
  1. Добро пожаловать в SO. Это больше похоже на комментарий, если ваш уровень репутации не позволяет вам комментировать, по крайней мере, предоставьте Минимальный, Полный и Проверяемый пример .
    2019-05-08 17: 26: 33Z

Исходя из этих неполных фрагментов, я думаю, что проблемная строка - это

validator: (selectedYear) => selectedYear ? null: 'rawr' потому что тип selectedYear не указан и не может быть выведен. Если вы измените его как

validator: (int selectedYear) => selectedYear ? null: 'rawr' тогда анализатор выдаст ошибку для использования не-bool типа в условии. Также вы можете включить опцию анализатора unrelated_type_equality_checks, которая предупредит вас о selectedYear == '', потому что вы сравниваете строку и динамическое значение.

Исправить несложно, validator: (int selectedYear) => selectedYear >= 21 ? null: 'rawr'

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

    
0
2019-05-08 17: 05: 53Z
источник размещен Вот