tryDisplay method
void
tryDisplay(
- BuildContext context, {
- Option? option = const Option(),
- RatingButtonBuilder? ratingButtonBuilder,
- dynamic onSubmit()?,
- VoidCallback? onSkip,
override
Display form after specific interval of time.
AppFeedback
form will be displayed once duration
provided in void init(FeedbackConfig config)
is completed
If duration
is remaing then nothing will be displayed
void checkAppFeedback() {
feedback.tryDisplay(context, onSubmit: (feedback) {
print(feedback.toString());
});
}
Implementation
@override
void tryDisplay(
BuildContext context, {
Option? option = const Option(),
RatingButtonBuilder? ratingButtonBuilder,
Function(UserFeedback)? onSubmit,
VoidCallback? onSkip,
}) async {
assert(
pref != null,
"Seems like feedback form isn't initilise" +
"\nTry to initilise the feedback form first by using below code" +
"\n\n@override" +
"\nvoid initState() {" +
"\n feedbackForm.init(FeedbackConfig(duration: Duration(seconds: 10)));" +
"\n super.initState();" +
"\n}\n");
/// Check if there is already a feedback in local cache
var feedback = await pref!.getAppFeedback();
if (feedback != null) {
final diff = DateTime.now().difference(feedback.createdAt!);
/// If user haven't submiited feedback
/// And if initial feedback duration is found to be longer then user's provided duration.
/// Display feedback form
if (feedback.rating == null && diff.compareTo(config.duration) > 0) {
/// Reset timer to display FeedbackPage after [Option.duration]
await pref!.saveAppFeedback(UserFeedback(createdAt: DateTime.now()));
/// Display sheet
display(
context,
onSubmit: onSubmit,
option: option,
onSkip: onSkip,
saveToCache: true,
);
}
/// If users alreay submitted his feedback
/// And provided duration is expired then its time to ask user to give feedback again
else if (feedback.rating != null && diff.compareTo(config.duration) > 0) {
/// Reset save timing to display FeedbackPage after 7 Days.
await pref!
.saveAppFeedback(feedback.copyWith(createdAt: DateTime.now()));
/// Display sheet
display(context,
onSubmit: onSubmit,
option: option,
onSkip: onSkip,
saveToCache: true,
ratingButtonBuilder: ratingButtonBuilder);
} else {
final remaing = config.duration - diff;
Util.cprint("Remaing time: ${remaing.toString()}",
display: config.displayLogs);
}
}
}