Flutter 如何在颤振中检查DateTime初始化变量中的可空值

Flutter 如何在颤振中检查DateTime初始化变量中的可空值,flutter,datetime,dart,Flutter,Datetime,Dart,有两个主要问题: 不允许初始化DateTime变量 Date.now()随机初始化的dateTime变量的三元检查仍然无法检查空值 导入“包装:颤振/材料.省道”; 导入“包:intl/intl.dart”; 类NewTransaction扩展了StatefulWidget{ 最终函数transactionAddHandler; NewTransaction(this.transactionAddHandler); @凌驾 _NewTransactionState createState()

有两个主要问题:

  • 不允许初始化DateTime变量
  • Date.now()随机初始化的dateTime变量的三元检查仍然无法检查空值
  • 导入“包装:颤振/材料.省道”;
    导入“包:intl/intl.dart”;
    类NewTransaction扩展了StatefulWidget{
    最终函数transactionAddHandler;
    NewTransaction(this.transactionAddHandler);
    @凌驾
    _NewTransactionState createState();
    }
    类_NewTransactionState扩展了状态{
    最终_titleController=TextEditingController();
    最终_amountController=TextEditingController();
    日期时间\u选择日期;
    void _submitData(){
    最终输入标题=_titleController.text;
    final enteredAmount=double.parse(\u amountController.text);
    如果(输入emount _submitData(),
    ),
    文本字段(
    装饰:输入装饰(标签文本:“金额”),
    键盘类型:TextInputType.number,
    控制器:\数量控制器,
    OnSubmited:()=>submitData(),
    ),
    容器(
    身高:70,
    孩子:排(
    儿童:[
    正文(
    _selectedDate==null
    “没有选择日期!”
    :DateFormat.yMd().format(_selectedDate),
    ),
    扁平按钮(
    textColor:Theme.of(context.primaryColor),
    子:文本(
    “选择日期”,
    样式:TextStyle(
    fontWeight:fontWeight.bold,
    ),
    ),
    onPressed:\u presentDatePicker,
    )
    ],
    ),
    ),
    升起的按钮(
    按下按钮:\ u提交数据,
    子:文本(
    “添加事务”,
    ),
    textColor:Colors.white,
    颜色:主题。背景。原色,
    )
    ],
    ),
    ),
    );
    }
    }
    

    一定要帮助我和弗利特社区更好地发展。提前感谢。

    如果
    \u selectedDate
    属性没有默认值,请将其设置为空:

    class _NewTransactionState extends State<NewTransaction> {
      ...
      DateTime? _selectedDate;
    
      ...
    }
    
    class\u NewTransactionState扩展状态{
    ...
    日期时间?\您选择的日期;
    ...
    }
    
    我仍然遇到错误。解决了旧的初始化错误,但出现了新的错误。当我使用该变量使用intl包格式化时,它抛出一个错误,指出-参数类型“DateTime?”无法分配给参数类型“DateTime”。在使用它之前,您需要检查该变量是否为null。如果您确实确定在使用它时它不会为null,那么可以使用bang操作符:
    \u selectedDate。我建议您进一步了解Dart中的零安全性:
    
    class _NewTransactionState extends State<NewTransaction> {
      ...
      DateTime? _selectedDate;
    
      ...
    }