问题描述
'databaseFunctions.dart'
String path = 'path' // a variable needed to be modified across page
Future queryALL() async {
Database db = await openDatabase(path);
return await db.query('all'); }
'main.dart'
// inside a stateful widget
DropdownButton(
value: currentValue,onChanged: (String newValue) {
setState(() {
currentValue = newValue;
>> path = newValue << ;}} // How can I accomplish this?
'few other pages'
// call queryALL() to build dataTable
提供者,由于页面var x所在的页面没有小部件,因此Navigator无法正常工作,因此对于任何上下文都没有明确的入口。 “导入”无效,因为它仅初始化var x。 有什么想法吗?
解决方法
在这种情况下,我正在使用状态管理Getx。像这样导入
dependencies:
get: ^3.8.0
定义这样的控制器
class DatabaseController extends GetxController{
RxString path = 'path'.obs;
Future queryALL() async {
Database db = await openDatabase(path);
return await db.query('all');
}
}
如果要在任何地方使用该控制器,则应在程序启动时进行初始化。我建议您在main.dart中这样做
DatabaseController dbController = Get.put(DatabaseController());
那么您总是可以像这样访问该控制器
DatabaseController dbController = Get.find();
您只需要这样打电话
DropdownButton(
value: currentValue,onChanged: (String newValue) {
setState(() {
currentValue = newValue;
dbController.path.value = newValue;
dbController.queryAll();
}
}