-
Notifications
You must be signed in to change notification settings - Fork 10
/
study_dialogs.dart
47 lines (41 loc) · 1.66 KB
/
study_dialogs.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:studyu_designer_v2/domain/study.dart';
import 'package:studyu_designer_v2/features/dialogs/close/study_close_dialog_confirm.dart';
import 'package:studyu_designer_v2/features/dialogs/close/study_close_dialog_success.dart';
import 'package:studyu_designer_v2/features/dialogs/publish/study_publish_dialog_confirm.dart';
import 'package:studyu_designer_v2/features/dialogs/publish/study_publish_dialog_success.dart';
import 'package:studyu_designer_v2/features/study/study_controller.dart';
import 'package:studyu_designer_v2/features/study/study_page_view.dart';
import 'package:studyu_designer_v2/theme.dart';
enum StudyDialogType { publish, close }
class StudyDialog extends StudyPageWidget {
final StudyDialogType dialogType;
const StudyDialog(this.dialogType, super.studyId, {super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final state = ref.watch(studyControllerProvider(studyId));
switch (dialogType) {
case StudyDialogType.publish:
return state.isPublished
? PublishSuccessDialog(studyId)
: PublishConfirmationDialog(studyId);
case StudyDialogType.close:
return state.isClosed
? CloseSuccessDialog(studyId)
: CloseConfirmationDialog(studyId);
}
}
}
Future showStudyDialog(
BuildContext context,
StudyID studyId,
StudyDialogType dialogType,
) {
final theme = Theme.of(context);
return showDialog(
context: context,
barrierColor: ThemeConfig.modalBarrierColor(theme),
builder: (context) => StudyDialog(dialogType, studyId),
);
}