feat: customAppbarBuilder

This commit is contained in:
Stein Milder 2022-09-28 09:23:41 +02:00
parent 3242002182
commit 154e7a80d1
3 changed files with 15 additions and 4 deletions

View file

@ -11,6 +11,7 @@ class AuthScreen extends StatefulWidget {
required this.nextBtnTitle, required this.nextBtnTitle,
required this.previousBtnTitle, required this.previousBtnTitle,
required this.onFinish, required this.onFinish,
this.customAppBar,
super.key, super.key,
}) : assert(steps.length > 0, 'At least one step is required'); }) : assert(steps.length > 0, 'At least one step is required');
@ -23,6 +24,7 @@ class AuthScreen extends StatefulWidget {
final String submitBtnTitle; final String submitBtnTitle;
final String nextBtnTitle; final String nextBtnTitle;
final String previousBtnTitle; final String previousBtnTitle;
final AppBar? customAppBar;
@override @override
State<AuthScreen> createState() => _AuthScreenState(); State<AuthScreen> createState() => _AuthScreenState();
@ -34,12 +36,16 @@ class _AuthScreenState extends State<AuthScreen> {
final _animationDuration = const Duration(milliseconds: 300); final _animationDuration = const Duration(milliseconds: 300);
final _animationCurve = Curves.ease; final _animationCurve = Curves.ease;
AppBar get _appBar =>
widget.customAppBar ??
AppBar(
title: Text(widget.title),
);
@override @override
Widget build(BuildContext context) => Scaffold( Widget build(BuildContext context) => Scaffold(
backgroundColor: Theme.of(context).backgroundColor, backgroundColor: Theme.of(context).backgroundColor,
appBar: AppBar( appBar: _appBar,
title: Text(widget.title),
),
body: Form( body: Form(
key: _formKey, key: _formKey,
child: PageView( child: PageView(

View file

@ -1,4 +1,4 @@
import 'package:flutter/widgets.dart'; import 'package:flutter/material.dart';
import 'package:flutter_registration/flutter_registration.dart'; import 'package:flutter_registration/flutter_registration.dart';
class RegistrationOptions { class RegistrationOptions {
@ -7,12 +7,14 @@ class RegistrationOptions {
required this.registrationSteps, required this.registrationSteps,
required this.afterRegistration, required this.afterRegistration,
this.registrationTranslations = const RegistrationTranslations(), this.registrationTranslations = const RegistrationTranslations(),
this.customAppbarBuilder,
}); });
final RegistrationTranslations registrationTranslations; final RegistrationTranslations registrationTranslations;
final List<AuthStep> registrationSteps; final List<AuthStep> registrationSteps;
final VoidCallback afterRegistration; final VoidCallback afterRegistration;
final RegistrationRepository registrationRepository; final RegistrationRepository registrationRepository;
final AppBar Function(String title)? customAppbarBuilder;
static List<AuthStep> get defaultSteps => [ static List<AuthStep> get defaultSteps => [
AuthStep( AuthStep(

View file

@ -32,6 +32,9 @@ class RegistrationScreen extends StatelessWidget {
return AuthScreen( return AuthScreen(
steps: registrationOptions.registrationSteps, steps: registrationOptions.registrationSteps,
customAppBar: registrationOptions.customAppbarBuilder?.call(
translations.title,
),
onFinish: register, onFinish: register,
title: translations.title, title: translations.title,
submitBtnTitle: translations.registerBtn, submitBtnTitle: translations.registerBtn,