fix(messaging, android): stop app from crashing when DartCallback
or Context
is null
#12842
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
issue 9345
This crash occurs because the
DartCallback
isnull
in some instances when retrieving.Other notification plugins appear to check if the
DartCallback
instance isnull
or not:See awesome notifications
See flutter local notifications
This fixes this issue.
issue 12840
This crash occurs because
Context.getSharedPreferences()
is called when thecontext
object isnull
.This is fixed by checking if
context
isnull
before callinggetSharedPreferences()
.Upon further investigation, I noticed that this class doesn't appear to be instantiated or called at least from my local testing which is one of two methods we set context for the plugin.
The other method, is here. What is interesting about this occurrence is we don't actually check whether
context.getApplicationContext()
actually has a Context object. It seems that in some occurrences this must benull
which makes the application crash in rare instances when callingContext.getSharedPreferences()
.I've added a speculative way to set context on plugin initialisation here to ensure there is a context object set.
Also safeguard that there is a
context
object here.Related Issues
closes #9345
closes #12840
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes (
[x]
).This will ensure a smooth and quick review process. Updating the
pubspec.yaml
and changelogs is not required.///
).melos run analyze
) does not report any problems on my PR.Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?