diff --git a/lib/src/survey_kit.dart b/lib/src/survey_kit.dart index daaa532..4f39b01 100644 --- a/lib/src/survey_kit.dart +++ b/lib/src/survey_kit.dart @@ -170,41 +170,51 @@ class _SurveyPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: widget.backgroundColor, - appBar: widget.appBar ?? const SurveyAppBar(), - body: Navigator( - key: widget.navigatorKey, - observers: [routeObserver], - onGenerateRoute: (settings) { - final arg = settings.arguments; - var step = widget.step; - SurveyState? surveyState; - if (arg is SurveyState) { - surveyState = settings.arguments! as SurveyState; - - step = surveyState.currentStep!; - } - return CupertinoPageRoute( - settings: settings, - builder: (_) { - return _SurveyView( - key: ValueKey( - step.id, - ), - id: step.id, - decoration: widget.decoration, - createView: () => AnswerView( - answer: step.answerFormat, - step: step, - stepResult: surveyState?.questionResults.firstWhereOrNull( - (element) => element.id == step.id, + final currentStepIndex = + Provider.of(context, listen: false) + .state + ?.currentStepIndex; + + return WillPopScope( + onWillPop: currentStepIndex == null && currentStepIndex == 0 + ? null + : () async => false, + child: Scaffold( + backgroundColor: widget.backgroundColor, + appBar: widget.appBar ?? const SurveyAppBar(), + body: Navigator( + key: widget.navigatorKey, + observers: [routeObserver], + onGenerateRoute: (settings) { + final arg = settings.arguments; + var step = widget.step; + SurveyState? surveyState; + if (arg is SurveyState) { + surveyState = settings.arguments! as SurveyState; + + step = surveyState.currentStep!; + } + return CupertinoPageRoute( + settings: settings, + builder: (_) { + return _SurveyView( + key: ValueKey( + step.id, ), - ), - ); - }, - ); - }, + id: step.id, + decoration: widget.decoration, + createView: () => AnswerView( + answer: step.answerFormat, + step: step, + stepResult: surveyState?.questionResults.firstWhereOrNull( + (element) => element.id == step.id, + ), + ), + ); + }, + ); + }, + ), ), ); }