在 Flutter 中,copyWith
方法是一种方便的方法,用于创建一个具有修改值的类的新实例,同时保留其他属性的原始值。 它通常与 immutable
包一起使用,该包允许您创建具有不可变属性的类。
下面是在 Flutter 应用程序中使用 copyWith
的示例:
Copy code
import 'package:immutable/immutable.dart';
class User {
final String name;
final int age;
User(this.name, this.age);
User copyWith({String name, int age}) {
return User(
name ?? this.name,
age ?? this.age,
);
}
}
void main() {
final user = User('John', 30);
final updatedUser = user.copyWith(name: 'Jane');
print(updatedUser.name); // 打印 'Jane'
print(updatedUser.age); // 打印 30
}
在此示例中,copyWith
方法使用修改后的 name
属性创建新的 User
实例,同时保留 age
属性的原始值。
您还可以使用 copyWith
方法来创建子类的新实例,通过使用 ..
运算符来设置子类的属性的值:
Copy code
class AdminUser extends User {
final bool isAdmin;
AdminUser(String name, int age, this.isAdmin) : super(name, age);
AdminUser copyWith({String name, int age, bool isAdmin}) {
return AdminUser(
name ?? this.name,
age ?? this.age,
isAdmin ?? this.isAdmin,
)..isAdmin = isAdmin ?? this.isAdmin;
}
}
在此示例中,AdminUser
子类的 copyWith
方法使用修改后的 name
、age
和 isAdmin
属性值创建新的 AdminUser
实例。