2022-11-01 09:19:20 +01:00
|
|
|
// SPDX-FileCopyrightText: 2022 Iconica
|
|
|
|
//
|
|
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
|
2022-09-27 12:00:03 +02:00
|
|
|
import 'dart:collection';
|
|
|
|
|
2022-09-20 15:51:22 +02:00
|
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:flutter_registration/flutter_registration.dart';
|
|
|
|
import 'package:flutter_registration/src/auth_screen.dart';
|
|
|
|
|
|
|
|
class RegistrationScreen extends StatelessWidget {
|
|
|
|
const RegistrationScreen({
|
2022-09-26 10:35:53 +02:00
|
|
|
required this.registrationOptions,
|
2022-09-20 15:51:22 +02:00
|
|
|
super.key,
|
|
|
|
});
|
|
|
|
|
2022-09-26 10:35:53 +02:00
|
|
|
final RegistrationOptions registrationOptions;
|
2022-09-20 15:51:22 +02:00
|
|
|
|
2023-03-31 11:15:48 +02:00
|
|
|
Future<void> register({
|
2024-02-05 13:00:21 +01:00
|
|
|
required HashMap<String, dynamic> values,
|
2023-10-03 14:38:52 +02:00
|
|
|
required void Function(int? pageToReturn) onError,
|
2023-03-31 11:15:48 +02:00
|
|
|
}) async {
|
|
|
|
try {
|
|
|
|
var registered =
|
|
|
|
await registrationOptions.registrationRepository.register(values);
|
2023-09-20 11:45:55 +02:00
|
|
|
|
|
|
|
if (registered == null) {
|
2023-03-31 11:15:48 +02:00
|
|
|
registrationOptions.afterRegistration();
|
2023-09-19 11:16:43 +02:00
|
|
|
} else {
|
2023-10-03 14:38:52 +02:00
|
|
|
var pageToReturn = registrationOptions.onError?.call(registered);
|
2023-10-03 14:05:37 +02:00
|
|
|
|
2023-10-03 14:38:52 +02:00
|
|
|
onError(pageToReturn);
|
2023-03-31 11:15:48 +02:00
|
|
|
}
|
|
|
|
} catch (e) {
|
2023-10-03 14:38:52 +02:00
|
|
|
onError(0);
|
2023-03-31 11:15:48 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-09-20 15:51:22 +02:00
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
2022-09-26 10:35:53 +02:00
|
|
|
var translations = registrationOptions.registrationTranslations;
|
|
|
|
|
2022-09-20 15:51:22 +02:00
|
|
|
return AuthScreen(
|
2022-09-26 10:35:53 +02:00
|
|
|
steps: registrationOptions.registrationSteps,
|
2022-09-28 09:23:41 +02:00
|
|
|
customAppBar: registrationOptions.customAppbarBuilder?.call(
|
|
|
|
translations.title,
|
|
|
|
),
|
2022-09-22 11:48:04 +02:00
|
|
|
onFinish: register,
|
2024-02-06 09:51:25 +01:00
|
|
|
appBarTitle: translations.title,
|
2022-09-26 10:35:53 +02:00
|
|
|
submitBtnTitle: translations.registerBtn,
|
|
|
|
nextBtnTitle: translations.nextStepBtn,
|
|
|
|
previousBtnTitle: translations.previousStepBtn,
|
2023-02-16 15:02:03 +01:00
|
|
|
nextButtonBuilder: registrationOptions.nextButtonBuilder,
|
|
|
|
previousButtonBuilder: registrationOptions.previousButtonBuilder,
|
2023-09-19 11:16:43 +02:00
|
|
|
customBackgroundColor: registrationOptions.backgroundColor,
|
2024-02-02 22:18:03 +01:00
|
|
|
titleWidget: registrationOptions.titleWidget,
|
|
|
|
loginButton: registrationOptions.loginButton,
|
2022-09-20 15:51:22 +02:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|