为什么来自单独文件的变量在我没有将其设置为 null 的情况下作为 null 进入文件?



我正在将一个有状态小部件中的变量设置为等于另一个文件中的字符串。我希望这只在用户第一次启动程序时设置,因为以后可以更改它。唯一的问题是,当我在声明变量时将其设置为非null时,变量会显示为null。有人知道为什么会发生这种情况以及如何解决吗?谢谢

这是我声明变量currentSelectedType的地方。我把它设置为";等价值";。现在,当我试图在导入它的另一个文件中设置另一个变量等于它时,它会说它为null。还有resetData函数,我有时会使用它来清除值。但这不应该引起我的问题。

import 'package:flutter/cupertino.dart';

TextEditingController amountEditingController = TextEditingController();
TextEditingController descriptionEditingController = TextEditingController();
TextEditingController dataEditingController = TextEditingController();
TextEditingController rateEditingController = TextEditingController();
DateTime selectedDate = DateTime.now();
String currentSelectedType = "Equal Value";
resetData() {
amountEditingController = TextEditingController();
descriptionEditingController = TextEditingController();
payeeEditingController = TextEditingController();
rateEditingController = TextEditingController();
selectedDate = DateTime.now();
currentSelectedType = null;
}

这是我试图将holder设置为currentSelectedType变量的位置,该变量在另一个文件中声明(另一个名为variable_data,作为data导入(。但currentSelectedType在此处为null。这是我的问题。我希望它是我最初声明的,而不是null。我只需要能够设置支架等于它的初始值。

import 'package:testproject/widgetdata/variable_data.dart' as Data;
class InsertDataDrawer extends StatefulWidget {
@override
_InsertDataDrawerState createState() => _InsertDataDrawerState();
}
class _InsertDataDrawerState extends State<InsertDataDrawer> {
String selectedDate;
var deviceTypes = [''];
var dropTypes = recurring_type;
String holder = Data.currentSelectedType;

关于如何将重置数据功能称为的精简代码

Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Container(
width: MediaQuery.of(context).size.width * .85,
height: 50,
child: RaisedButton(
textColor: Colors.white,
color: Colors.green,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10)),
child: Text("Save Data"),
onPressed: () {
submitData();
},
),
)
],
),
submitData() async {
Data.resetData();
Navigator.pop(context);
Fluttertoast.showToast(
msg: "Data successfully submitted",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.TOP,
timeInSecForIosWeb: 3,
backgroundColor: Colors.blue,
textColor: Colors.white,
fontSize: 15 );
}

不完全确定问题是什么,绝对不在代码中。不过,我的电脑完全重新启动就解决了这个问题。

最新更新