我正在使用颤振的 getit 包。如何使用 getit 包监听扩展 changeNotifer 的单例类的变化?
class UserService extends ChangeNotifier {
Database _db = serviceLocator<Database>();
User user;
Future<void> loadUserFromDatabase(String userId) async {
User user = await _db.getUser(userId);
if (user != null) {
updateUser(user: user);
}
}
void updateUser({
User user,
}) {
this.user = user;
notifyListeners();
}
}
// SERVICE LOCATOR
GetIt serviceLocator = GetIt.instance;
void setupServiceLocator() {
serviceLocator.registerLazySingleton<Database>(
() => DatabaseImpl(),
);
serviceLocator.registerLazySingleton<UserService>(
() => UserService(),
);
}
class UserDetailsPage extends StatelessWidget {
final _service = serviceLocator<UserService>();
@override
Widget build(BuildContext context) {
return return Container(
padding: const EdgeInsets.all(8.0),
child: Text(
_service.user != null
? _service.user.name
: "",
),
);
}
在上面的代码中,如何将名称的变化反映到 UserDetailsPage 中?