slider_captcha: ^1.0.2

void register() async {
if (!isSliderVerified) {
Get.dialog(
buildSliderCaptcha(Get.context!),
barrierDismissible: true,
);
return;
}
await _performRegister();
}
Widget buildSliderCaptcha(BuildContext context) {
return Center(
child: Container(
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(8)),
padding: const EdgeInsets.all(16.0),
margin: const EdgeInsets.all(16.0),
child: SliderCaptcha(
controller: sliderController,
image: Image.asset(
'assets/images/captcha.png',
fit: BoxFit.fitWidth,
),
colorBar: const Color(0xff0052D9),
colorCaptChar: const Color(0xff0052D9),
onConfirm: (value) async {
if (value) {
Loading.success("验证通过");
Get.back();
isSliderVerified = true;
await _performRegister();
} else {
Future.delayed(const Duration(seconds: 1)).then((_) {
sliderController.create();
});
Loading.error("请重试");
}
},
),
),
);
}
Future<void> _performRegister() async {
Loading.show();
var res = await LoginApi.register(
UserRegisterReq(
account: phoneController.text,
code: codeController.text,
password: passwordController.text,
)
);
if (res) {
Loading.success('注册成功');
isSliderVerified = false;
Get.back();
} else {
Loading.error('注册失败');
isSliderVerified = false;
}
}