Dart 中的 Kotlin `apply()` 方法模拟

Pav*_*sha 8 android dart kotlin flutter

我希望能够apply()在 Dart 中使用 Kotlin 做类似的事情。例如在科特林中

var userDetails: UserDetails = userRepo.getUser().apply{
    //here 'this' is UserDetails so all the further calls are made in that context
    name = "Name"
    email = "email@test.com"
    callSomeInnerMethodOfUserDetails()
};
Run Code Online (Sandbox Code Playgroud)

Dart 语言是否有类似的方法或方式?

我想知道标准库或语言本身是否有一些东西,而不是我自己的通用闭包扩展用于这种目的?

谢谢。

Pav*_*sha 10

虽然没有确切的模拟,但我偶然发现了一个称为级联表示法的特殊运算符,它可以完成类似的工作。

给定的示例将类似于:

UserDetails userDetails = userRepo.getUser()
    ..name = 'Name'
    ..email = 'email@test.com'
    ..callSomeInnerMethodOfUserDetails();
Run Code Online (Sandbox Code Playgroud)

您还可以进行嵌套级联

UserDetails otherUserDetails = userRepo.getUser()
    ..name = (userRepo.getUser()
              ..firstName= "Other Name"
              ..assignFirstNameAndSurnameToNameField()).name
    ..email = "otherEmail"
    ..callSomeInnerMethodOfUserDetails();
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你。