使用 JwtSessionHandler 时出现类型错误 - dart

Type Error when using JwtSessionHandler - dart

我在使用 JwtSessionHandler 时遇到了飞镖类型的问题。我想使用 this example application from the shelf_auth git 存储库作为指南来集成用户身份验证和会话。

不幸的是,我在 运行 应用程序时遇到错误(在 运行 应用程序之前未检测到语法错误) 错误信息如下:

Breaking on exception: object of type _TypeError: type '(String, String) => Future<UserLookupByUsernamePassword<Principal>>' is not a subtype of type 'UserLookupByUsernamePassword' of 'userLookup'.

错误源于这行代码

var sessionHandler = new JwtSessionHandler('super app',new Uuid().v4(),testLookup.lookupByUsernamePassword);

准确地说是 JwtSessionHandler 的最后一个输入参数 testLookup.lookupByUsernamePasswordtestLookupvar testLookup = new TestUserLookup();

定义

哪里

class TestUserLookup {
  Future<Option<Principal>> lookupByUsernamePassword(String username, String password) {
    final validUser = username == 'fred';
    final principalOpt = validUser ? new Some(new Principal(username)) : const None();

    return new Future.value(principalOpt);
  }

  Future<Option<Principal>> lookupByUsername(String username) {
    final validUser = username == 'fred';

    final principalOpt = validUser ? new Some(new Principal(username)) : const None();

    return new Future.value(principalOpt);
  }
}

所以这部分代码和例子中的完全一样。我试图将 Option<Principal> 部分更改为 UserLookupByUsername<Principal> 但后来我卡住了。我的应用程序的全部代码可以找到 here. The error occurs in handlers.dart.

非常感谢任何帮助。

这是因为 JwtSessionHandler 期望 lookupByUsername 函数只有一个参数,而不是 lookupByUsernamePassword 有两个参数。