将 SharedPreferences 值传递给 Flutter 中的另一个方法
Pass SharedPreferences value to another method in Flutter
我想在页面的 initState 中获取 SharedPreferences 值,并将该值传递给 returns Future 的另一个方法。但仅仅因为 SharedPreferences returns 一个 Future 这是它的正常结果,我无法将它的值传递给另一个方法。它总是 returns "null",这是我的 SharedPref 方法:
Future<String> getTenantId() async {
SharedPreferences appPreferences = await SharedPreferences.getInstance();
final tenantId = appPreferences.getString("tenantId");
if(tenantId == null) {
return null;
}
return tenantId;
}
在我的 initState 方法中:
@override
void initState() {
// TODO: implement initState
super.initState();
final tenantId = getTenantId();
tenantId.then((value) => {
_debitInvoiceFuture = dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value)
});
}
"dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value)" 这一行 returns Future,我将它与 FutureBuilder 小部件一起使用来构建 UI。还有其他方法吗?
当我尝试在 initState
中使用 Future 时,我使用 Future
Future.delayed(Duration.zero, () async {
_debitInvoiceFuture = await dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value)
});
试试这个
@override
void initState() {
// TODO: implement initState
super.initState();
Future<String> tenantId = Future(getTenantId());
tenantId.then((value) => {
_debitInvoiceFuture = Future (dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value));
});
}
只写一个 returns 您需要 Future
的方法:
void initState() {
// TODO: implement initState
super.initState();
_debitInvoiceFuture = _getDebitInvoiceFuture();
}
Future<?> _getDebitInvoiceFuture() async { // figure out what future your getSingleDebitInvoiceById returns
final appPreferences = await SharedPreferences.getInstance();
final tenantId = await appPreferences.getString("tenantId");
return dInvoiceRep.getSingleDebitInvoiceById(widget.dId, tenantId)
}
我想在页面的 initState 中获取 SharedPreferences 值,并将该值传递给 returns Future 的另一个方法。但仅仅因为 SharedPreferences returns 一个 Future 这是它的正常结果,我无法将它的值传递给另一个方法。它总是 returns "null",这是我的 SharedPref 方法:
Future<String> getTenantId() async {
SharedPreferences appPreferences = await SharedPreferences.getInstance();
final tenantId = appPreferences.getString("tenantId");
if(tenantId == null) {
return null;
}
return tenantId;
}
在我的 initState 方法中:
@override
void initState() {
// TODO: implement initState
super.initState();
final tenantId = getTenantId();
tenantId.then((value) => {
_debitInvoiceFuture = dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value)
});
}
"dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value)" 这一行 returns Future,我将它与 FutureBuilder 小部件一起使用来构建 UI。还有其他方法吗?
当我尝试在 initState
中使用 Future 时,我使用 Future
Future.delayed(Duration.zero, () async {
_debitInvoiceFuture = await dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value)
});
试试这个
@override
void initState() {
// TODO: implement initState
super.initState();
Future<String> tenantId = Future(getTenantId());
tenantId.then((value) => {
_debitInvoiceFuture = Future (dInvoiceRep.getSingleDebitInvoiceById(widget.dId, value));
});
}
只写一个 returns 您需要 Future
的方法:
void initState() {
// TODO: implement initState
super.initState();
_debitInvoiceFuture = _getDebitInvoiceFuture();
}
Future<?> _getDebitInvoiceFuture() async { // figure out what future your getSingleDebitInvoiceById returns
final appPreferences = await SharedPreferences.getInstance();
final tenantId = await appPreferences.getString("tenantId");
return dInvoiceRep.getSingleDebitInvoiceById(widget.dId, tenantId)
}