将 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)
}