Проверка поля даты во флаттере с булевыми данными - PullRequest
0 голосов
/ 08 мая 2019

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

При обработке жеста было выдвинуто следующее утверждение: 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, прежде чем перейти к следующему экрану. Пожалуйста, дайте мне знать, где я ошибся.

Ответы [ 2 ]

1 голос
/ 08 мая 2019

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

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

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

 bool isValidDob(String dob) { 
     if (dob.isEmpty){
      return true;
      }
     else{
       return false
       }
    }
0 голосов
/ 08 мая 2019

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

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 любая переменная может быть нулевой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...