在创建扩展ChangeNotifier的模型类时,有没有像@annotation这样的东西来删除样板
样板
class MyModel extends ChangeNotifier{
bool _isLoading = true;
bool get isLoading => _isLoading;
set isLoading(bool value) {
_isLoading = value;
notifyListeners();
}
}使用@annotation之类的东西
class MyModel extends ChangeNotifier{
@Notify
bool _isLoading = true;
}发布于 2021-08-27 10:46:48
您可以尝试使用Get进行状态管理:https://pub.dev/packages/get
使用Get进行反应式编程与使用setState一样简单。
首先,你可以创建一个新的控制器:
import 'package:get/get.dart';
class FormController extends GetxController {
FormController();
Rx<bool> _isLoading = false.obs;
set setLoading(value) => this._isLoading.value = value;
bool get loading => this._isLoading.value;
}在UI中,当您想要显示该值并在值发生变化时更新屏幕时,只需执行以下操作:
Obx(
() => formController.loading
? Center(
child: CircularProgressIndicator(),
)
: ElevatedButton(
onPressed: formController.googleLoading ||
formController.anonymousLoading
? null
: () async {
formController.setLoading = true;
if (_formKey.currentState!.validate()) {
await userController
.loginWithEmailAndPassword(
formController.email,
formController.password);
}
formController.setLoading = false;
},
child: Text('login'.tr),
),
),有关状态管理here的更深入说明,请参阅。在那里,您将看到更多示例以及简单状态管理器和反应式状态管理器之间的区别
您将对GetX power有一个很好的了解。
https://stackoverflow.com/questions/68921106
复制相似问题