diff --git a/.github/workflows/google_api_availability_android.yaml b/.github/workflows/google_api_availability_android.yaml
index 98e5f89..3471c88 100644
--- a/.github/workflows/google_api_availability_android.yaml
+++ b/.github/workflows/google_api_availability_android.yaml
@@ -23,7 +23,7 @@ jobs:
 
     env:
       source-directory: ./google_api_availability_android
-      example-directory: ./google_api_availability/example
+      example-directory: ./google_api_availability_android/example
 
     # Steps represent a sequence of tasks that will be executed as part of the job
     steps:
diff --git a/google_api_availability_android/CHANGELOG.md b/google_api_availability_android/CHANGELOG.md
index 3af33e5..4cdab60 100644
--- a/google_api_availability_android/CHANGELOG.md
+++ b/google_api_availability_android/CHANGELOG.md
@@ -1,3 +1,8 @@
+## 1.1.0
+
+ * Fixes compile errors for Flutter 3.29.0 (and above)
+ * Updates compileSDKversion to 35
+
 ## 1.0.1
 
 * Adds support for the namespace property to support Android Gradle Plugin (AGP) 8.
diff --git a/google_api_availability_android/android/build.gradle b/google_api_availability_android/android/build.gradle
index 5b6a3e7..8cb6142 100644
--- a/google_api_availability_android/android/build.gradle
+++ b/google_api_availability_android/android/build.gradle
@@ -1,17 +1,6 @@
 group 'com.baseflow.googleapiavailability'
 version '1.0-SNAPSHOT'
 
-buildscript {
-    repositories {
-        google()
-        mavenCentral()
-    }
-
-    dependencies {
-        classpath 'com.android.tools.build:gradle:4.1.0'
-    }
-}
-
 rootProject.allprojects {
     repositories {
         google()
@@ -27,7 +16,7 @@ android {
         namespace 'com.baseflow.googleapiavailability'
     }
 
-    compileSdkVersion 31
+    compileSdkVersion 35
 
     compileOptions {
         sourceCompatibility JavaVersion.VERSION_1_8
diff --git a/google_api_availability_android/android/gradle/wrapper/gradle-wrapper.properties b/google_api_availability_android/android/gradle/wrapper/gradle-wrapper.properties
index 69a9715..59bc51a 100644
--- a/google_api_availability_android/android/gradle/wrapper/gradle-wrapper.properties
+++ b/google_api_availability_android/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-bin.zip
 zipStoreBase=GRADLE_USER_HOME
 zipStorePath=wrapper/dists
diff --git a/google_api_availability_android/android/settings.gradle b/google_api_availability_android/android/settings.gradle
index f5ff5d0..29608ad 100644
--- a/google_api_availability_android/android/settings.gradle
+++ b/google_api_availability_android/android/settings.gradle
@@ -1 +1,24 @@
-rootProject.name = 'google_api_availability'
+pluginManagement {
+     def flutterSdkPath = {
+         def properties = new Properties()
+         file("local.properties").withInputStream { properties.load(it) }
+         def flutterSdkPath = properties.getProperty("flutter.sdk")
+         assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+         return flutterSdkPath
+     }()
+
+     includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+     repositories {
+         google()
+         mavenCentral()
+         gradlePluginPortal()
+     }
+ }
+
+plugins {
+    id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+    id "com.android.application" version "8.1.0" apply false
+}
+
+ include ":app"
\ No newline at end of file
diff --git a/google_api_availability_android/android/src/main/java/com/baseflow/googleapiavailability/GoogleApiAvailabilityPlugin.java b/google_api_availability_android/android/src/main/java/com/baseflow/googleapiavailability/GoogleApiAvailabilityPlugin.java
index aef880b..72bbb43 100644
--- a/google_api_availability_android/android/src/main/java/com/baseflow/googleapiavailability/GoogleApiAvailabilityPlugin.java
+++ b/google_api_availability_android/android/src/main/java/com/baseflow/googleapiavailability/GoogleApiAvailabilityPlugin.java
@@ -8,9 +8,6 @@
 import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
 import io.flutter.plugin.common.BinaryMessenger;
 import io.flutter.plugin.common.MethodChannel;
-import io.flutter.plugin.common.PluginRegistry.Registrar;
-import io.flutter.plugin.common.PluginRegistry.ViewDestroyListener;
-import io.flutter.view.FlutterNativeView;
 
 /**
  * GoogleApiAvailabilityPlugin
@@ -26,49 +23,43 @@ public GoogleApiAvailabilityPlugin() {
   }
 
   @Override
-  public void onAttachedToActivity(ActivityPluginBinding binding) {
-    methodCallHandler.setActivity(binding.getActivity());
-  }
+    public void onAttachedToActivity(ActivityPluginBinding binding) {
+      if (methodCallHandler != null) {
+        methodCallHandler.setActivity(binding.getActivity());
+      }
+    }
 
-  @Override
-  public void onDetachedFromActivity() {
-    methodCallHandler.setActivity(null);
-  }
+    @Override
+    public void onDetachedFromActivity() {
+      if (methodCallHandler != null) {
+        methodCallHandler.setActivity(null);
+      }
+    }
 
-  @Override
-  public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
-    methodCallHandler.setActivity(binding.getActivity());
-  }
+    @Override
+    public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
+      if (methodCallHandler != null) {
+        methodCallHandler.setActivity(binding.getActivity());
+      }
+    }
 
-  @Override
-  public void onDetachedFromActivityForConfigChanges() {
-    methodCallHandler.setActivity(null);
-  }
+    @Override
+    public void onDetachedFromActivityForConfigChanges() {
+      if (methodCallHandler != null) {
+        methodCallHandler.setActivity(null);
+      }
+    }
 
-  @Override
-  public void onAttachedToEngine(FlutterPluginBinding binding) {
-    registerPlugin(binding.getApplicationContext(), binding.getBinaryMessenger());
-  }
+    @Override
+    public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
+      registerPlugin(binding.getApplicationContext(), binding.getBinaryMessenger());
+    }
 
   @Override
   public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
     unregisterPlugin();
   }
 
-  public static void registerWith(Registrar registrar) {
-    final GoogleApiAvailabilityPlugin plugin = new GoogleApiAvailabilityPlugin();
-    plugin.registerPlugin(registrar.context(), registrar.messenger());
-    plugin.methodCallHandler.setActivity(registrar.activity());
-
-    registrar.addViewDestroyListener(new ViewDestroyListener() {
-      @Override
-      public boolean onViewDestroy(FlutterNativeView view) {
-        plugin.unregisterPlugin();
-        return false;
-      }
-    });
-  }
-
   private void registerPlugin(Context context, BinaryMessenger messenger) {
     methodCallHandler = new MethodCallHandlerImpl(context, googleApiAvailabilityManager);
     channel = new MethodChannel(messenger, "flutter.baseflow.com/google_api_availability_android/methods");
@@ -76,7 +67,9 @@ private void registerPlugin(Context context, BinaryMessenger messenger) {
   }
 
   private void unregisterPlugin() {
-    channel.setMethodCallHandler(null);
-    channel = null;
+    if (channel != null) {
+      channel.setMethodCallHandler(null);
+      channel = null;
+    }
   }
 }
\ No newline at end of file
diff --git a/google_api_availability_android/example/.gitignore b/google_api_availability_android/example/.gitignore
new file mode 100644
index 0000000..07488ba
--- /dev/null
+++ b/google_api_availability_android/example/.gitignore
@@ -0,0 +1,70 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# Visual Studio Code related
+.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Android related
+**/android/**/gradle-wrapper.jar
+**/android/.gradle
+**/android/captures/
+**/android/gradlew
+**/android/gradlew.bat
+**/android/local.properties
+**/android/**/GeneratedPluginRegistrant.java
+
+# iOS/XCode related
+**/ios/**/*.mode1v3
+**/ios/**/*.mode2v3
+**/ios/**/*.moved-aside
+**/ios/**/*.pbxuser
+**/ios/**/*.perspectivev3
+**/ios/**/*sync/
+**/ios/**/.sconsign.dblite
+**/ios/**/.tags*
+**/ios/**/.vagrant/
+**/ios/**/DerivedData/
+**/ios/**/Icon?
+**/ios/**/Pods/
+**/ios/**/.symlinks/
+**/ios/**/profile
+**/ios/**/xcuserdata
+**/ios/.generated/
+**/ios/Flutter/App.framework
+**/ios/Flutter/Flutter.framework
+**/ios/Flutter/Generated.xcconfig
+**/ios/Flutter/app.flx
+**/ios/Flutter/app.zip
+**/ios/Flutter/flutter_assets/
+**/ios/ServiceDefinitions.json
+**/ios/Runner/GeneratedPluginRegistrant.*
+
+# Exceptions to above rules.
+!**/ios/**/default.mode1v3
+!**/ios/**/default.mode2v3
+!**/ios/**/default.pbxuser
+!**/ios/**/default.perspectivev3
+!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
diff --git a/google_api_availability_android/example/.metadata b/google_api_availability_android/example/.metadata
new file mode 100644
index 0000000..66fe509
--- /dev/null
+++ b/google_api_availability_android/example/.metadata
@@ -0,0 +1,10 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled and should not be manually edited.
+
+version:
+  revision: 035e0765cc575c3b455689c2402cce073d564fce
+  channel: master
+
+project_type: app
diff --git a/google_api_availability_android/example/README.md b/google_api_availability_android/example/README.md
new file mode 100644
index 0000000..e767248
--- /dev/null
+++ b/google_api_availability_android/example/README.md
@@ -0,0 +1,16 @@
+# google_api_availability_example
+
+Demonstrates how to use the google_api_availability plugin.
+
+## Getting Started
+
+This project is a starting point for a Flutter application.
+
+A few resources to get you started if this is your first Flutter project:
+
+- [Lab: Write your first Flutter app](https://flutter.io/docs/get-started/codelab)
+- [Cookbook: Useful Flutter samples](https://flutter.io/docs/cookbook)
+
+For help getting started with Flutter, view our 
+[online documentation](https://flutter.io/docs), which offers tutorials, 
+samples, guidance on mobile development, and a full API reference.
diff --git a/google_api_availability_android/example/android/.gitignore b/google_api_availability_android/example/android/.gitignore
new file mode 100644
index 0000000..65b7315
--- /dev/null
+++ b/google_api_availability_android/example/android/.gitignore
@@ -0,0 +1,10 @@
+*.iml
+*.class
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+GeneratedPluginRegistrant.java
diff --git a/google_api_availability_android/example/android/.settings/org.eclipse.buildship.core.prefs b/google_api_availability_android/example/android/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 0000000..9851512
--- /dev/null
+++ b/google_api_availability_android/example/android/.settings/org.eclipse.buildship.core.prefs
@@ -0,0 +1,13 @@
+arguments=
+auto.sync=false
+build.scans.enabled=false
+connection.gradle.distribution=GRADLE_DISTRIBUTION(WRAPPER)
+connection.project.dir=
+eclipse.preferences.version=1
+gradle.user.home=
+java.home=/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
+jvm.arguments=
+offline.mode=false
+override.workspace.settings=true
+show.console.view=true
+show.executions.view=true
diff --git a/google_api_availability_android/example/android/app/.classpath b/google_api_availability_android/example/android/app/.classpath
new file mode 100644
index 0000000..eb19361
--- /dev/null
+++ b/google_api_availability_android/example/android/app/.classpath
@@ -0,0 +1,6 @@
+
+
+	
+	
+	
+
diff --git a/google_api_availability_android/example/android/app/.settings/org.eclipse.buildship.core.prefs b/google_api_availability_android/example/android/app/.settings/org.eclipse.buildship.core.prefs
new file mode 100644
index 0000000..b1886ad
--- /dev/null
+++ b/google_api_availability_android/example/android/app/.settings/org.eclipse.buildship.core.prefs
@@ -0,0 +1,2 @@
+connection.project.dir=..
+eclipse.preferences.version=1
diff --git a/google_api_availability_android/example/android/app/build.gradle b/google_api_availability_android/example/android/app/build.gradle
new file mode 100644
index 0000000..b466482
--- /dev/null
+++ b/google_api_availability_android/example/android/app/build.gradle
@@ -0,0 +1,64 @@
+plugins {
+     id "com.android.application"
+     id "dev.flutter.flutter-gradle-plugin"
+}
+
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+    localPropertiesFile.withReader('UTF-8') { reader ->
+        localProperties.load(reader)
+    }
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+    flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+    flutterVersionName = '1.0'
+}
+
+android {
+    namespace 'com.baseflow.googleapiavailabilityexample'
+    compileSdkVersion flutter.compileSdkVersion
+
+    compileOptions {
+        sourceCompatibility JavaVersion.VERSION_1_8
+        targetCompatibility JavaVersion.VERSION_1_8
+    }
+
+    lintOptions {
+        disable 'InvalidPackage'
+    }
+
+    defaultConfig {
+        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+        applicationId "com.baseflow.googleapiavailabilityexample"
+        minSdkVersion flutter.minSdkVersion
+        targetSdkVersion flutter.targetSdkVersion
+        versionCode flutterVersionCode.toInteger()
+        versionName flutterVersionName
+        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+    }
+
+    buildTypes {
+        release {
+            // TODO: Add your own signing config for the release build.
+            // Signing with the debug keys for now, so `flutter run --release` works.
+            signingConfig signingConfigs.debug
+        }
+    }
+}
+
+flutter {
+    source '../..'
+}
+
+dependencies {
+    androidTestImplementation 'androidx.test:runner:1.2.0'
+    androidTestImplementation 'androidx.test:rules:1.2.0'
+    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
\ No newline at end of file
diff --git a/google_api_availability_android/example/android/app/src/main/AndroidManifest.xml b/google_api_availability_android/example/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c887de4
--- /dev/null
+++ b/google_api_availability_android/example/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,40 @@
+
+    
+
+    
+        
+            
+            
+            
+            
+                
+                
+            
+        
+
+        
+        
+    
+
diff --git a/google_api_availability_android/example/android/app/src/main/res/drawable/launch_background.xml b/google_api_availability_android/example/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/google_api_availability_android/example/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+    +
+    
+    
+
diff --git a/google_api_availability_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/google_api_availability_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
Binary files /dev/null and b/google_api_availability_android/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/google_api_availability_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/google_api_availability_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
Binary files /dev/null and b/google_api_availability_android/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/google_api_availability_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/google_api_availability_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
Binary files /dev/null and b/google_api_availability_android/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/google_api_availability_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/google_api_availability_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
Binary files /dev/null and b/google_api_availability_android/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/google_api_availability_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/google_api_availability_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
Binary files /dev/null and b/google_api_availability_android/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/google_api_availability_android/example/android/app/src/main/res/values/styles.xml b/google_api_availability_android/example/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..00fa441
--- /dev/null
+++ b/google_api_availability_android/example/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,8 @@
+
+
+    
+
diff --git a/google_api_availability_android/example/android/build.gradle b/google_api_availability_android/example/android/build.gradle
new file mode 100644
index 0000000..bc157bd
--- /dev/null
+++ b/google_api_availability_android/example/android/build.gradle
@@ -0,0 +1,18 @@
+allprojects {
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+    project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+    project.evaluationDependsOn(':app')
+}
+
+tasks.register("clean", Delete) {
+    delete rootProject.buildDir
+}
diff --git a/google_api_availability_android/example/android/gradle.properties b/google_api_availability_android/example/android/gradle.properties
new file mode 100644
index 0000000..75e8721
--- /dev/null
+++ b/google_api_availability_android/example/android/gradle.properties
@@ -0,0 +1,4 @@
+android.enableJetifier=true
+android.useAndroidX=true
+android.enableR8=true
+org.gradle.jvmargs=-Xmx1536M
\ No newline at end of file
diff --git a/google_api_availability_android/example/android/gradle/wrapper/gradle-wrapper.properties b/google_api_availability_android/example/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..f7fafcd
--- /dev/null
+++ b/google_api_availability_android/example/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Apr 01 07:57:11 BST 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1-all.zip
diff --git a/google_api_availability_android/example/android/settings.gradle b/google_api_availability_android/example/android/settings.gradle
new file mode 100644
index 0000000..29a0efb
--- /dev/null
+++ b/google_api_availability_android/example/android/settings.gradle
@@ -0,0 +1,24 @@
+pluginManagement {
+     def flutterSdkPath = {
+         def properties = new Properties()
+         file("local.properties").withInputStream { properties.load(it) }
+         def flutterSdkPath = properties.getProperty("flutter.sdk")
+         assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+         return flutterSdkPath
+     }()
+
+     includeBuild("$flutterSdkPath/packages/flutter_tools/gradle")
+
+     repositories {
+         google()
+         mavenCentral()
+         gradlePluginPortal()
+     }
+ }
+
+ plugins {
+     id "dev.flutter.flutter-plugin-loader" version "1.0.0"
+     id "com.android.application" version "8.1.0" apply false
+ }
+
+ include ":app" 
\ No newline at end of file
diff --git a/google_api_availability_android/example/lib/main.dart b/google_api_availability_android/example/lib/main.dart
new file mode 100644
index 0000000..aa4ca7c
--- /dev/null
+++ b/google_api_availability_android/example/lib/main.dart
@@ -0,0 +1,194 @@
+import 'dart:async';
+
+import 'package:flutter/material.dart';
+import 'package:flutter/services.dart';
+import 'package:google_api_availability_android/google_api_availability_android.dart';
+import 'package:google_api_availability_platform_interface/google_api_availability_platform_interface.dart';
+
+void main() => runApp(const MyApp());
+
+///Creates the mutable state for this widget.
+class MyApp extends StatefulWidget {
+  /// Named [key] parameter to identify a widget.
+  const MyApp({Key? key}) : super(key: key);
+
+  @override
+  // ignore: library_private_types_in_public_api
+  _MyAppState createState() => _MyAppState();
+}
+
+class _MyAppState extends State {
+  GooglePlayServicesAvailability _playStoreAvailability =
+      GooglePlayServicesAvailability.unknown;
+  String _errorString = 'unknown';
+  bool _isUserResolvable = false;
+  bool _errorDialogFragmentShown = false;
+
+  // Platform messages are asynchronous, so we initialize in an async method.
+  Future checkPlayServices([bool showDialog = false]) async {
+    GooglePlayServicesAvailability playStoreAvailability;
+    // Platform messages may fail, so we use a try/catch PlatformException.
+    try {
+      playStoreAvailability = await GoogleApiAvailabilityAndroid()
+          .checkGooglePlayServicesAvailability(showDialog);
+    } on PlatformException {
+      playStoreAvailability = GooglePlayServicesAvailability.unknown;
+    }
+
+    // If the widget was removed from the tree while the asynchronous platform
+    // message was in flight, we want to discard the reply rather than calling
+    // setState to update our non-existent appearance.
+    if (!mounted) {
+      return;
+    }
+
+    setState(() {
+      _playStoreAvailability = playStoreAvailability;
+    });
+  }
+
+  Future makeGooglePlayServicesAvailable() async {
+    try {
+      await GoogleApiAvailabilityAndroid().makeGooglePlayServicesAvailable();
+    } on PlatformException {
+      return;
+    }
+
+    if (!mounted) {
+      return;
+    }
+  }
+
+  Future getErrorString() async {
+    String errorString;
+
+    try {
+      errorString = await GoogleApiAvailabilityAndroid().getErrorString();
+    } on PlatformException {
+      errorString = 'Not available on non Android devices';
+    }
+
+    if (!mounted) {
+      return;
+    }
+
+    setState(() {
+      _errorString = errorString;
+    });
+  }
+
+  Future isUserResolvable() async {
+    bool isUserResolvable;
+
+    try {
+      isUserResolvable =
+          await GoogleApiAvailabilityAndroid().isUserResolvable();
+    } on PlatformException {
+      isUserResolvable = false;
+    }
+
+    if (!mounted) {
+      return;
+    }
+
+    setState(() {
+      _isUserResolvable = isUserResolvable;
+    });
+  }
+
+  Future showErrorNotification() async {
+    try {
+      await GoogleApiAvailabilityAndroid().showErrorNotification();
+    } on PlatformException {
+      return;
+    }
+
+    if (!mounted) {
+      return;
+    }
+  }
+
+  Future showErrorDialogFragment() async {
+    bool errorDialogFragmentShown;
+
+    try {
+      errorDialogFragmentShown =
+          await GoogleApiAvailabilityAndroid().showErrorDialogFragment();
+    } on PlatformException {
+      errorDialogFragmentShown = false;
+    }
+
+    if (!mounted) {
+      return;
+    }
+
+    setState(() {
+      _errorDialogFragmentShown = errorDialogFragmentShown;
+    });
+  }
+
+  @override
+  Widget build(BuildContext context) {
+    return MaterialApp(
+      home: Scaffold(
+          appBar: AppBar(
+            title: const Text('Plugin example app'),
+          ),
+          body: ListView(
+            children: [
+              MaterialButton(
+                onPressed: () => checkPlayServices(),
+                color: Colors.red,
+                child: const Text('Get PlayServices availability'),
+              ),
+              Center(
+                  child: Text(
+                      'Google Play Store status: ${_playStoreAvailability.toString().split('.').last}\n')),
+              MaterialButton(
+                onPressed: () => checkPlayServices(true),
+                color: Colors.redAccent,
+                child:
+                    const Text('Get PlayServices availability with fix dialog'),
+              ),
+              Center(
+                  child: Text(
+                      'Google Play Store status: ${_playStoreAvailability.toString().split('.').last}\n')),
+              MaterialButton(
+                onPressed: () => makeGooglePlayServicesAvailable(),
+                color: Colors.red,
+                child: const Text('Make Google Play Service available'),
+              ),
+              const SizedBox(height: 30),
+              MaterialButton(
+                onPressed: () => getErrorString(),
+                color: Colors.red,
+                child: const Text('Get string of the error code'),
+              ),
+              Center(child: Text('Error string: $_errorString\n')),
+              MaterialButton(
+                onPressed: () => isUserResolvable(),
+                color: Colors.red,
+                child: const Text('Error resolvable by user'),
+              ),
+              Center(
+                  child:
+                      Text('Error resolvable by user: $_isUserResolvable\n')),
+              MaterialButton(
+                onPressed: () => showErrorNotification(),
+                color: Colors.red,
+                child: const Text('Show error notification'),
+              ),
+              const SizedBox(height: 30),
+              MaterialButton(
+                onPressed: () => showErrorDialogFragment(),
+                color: Colors.red,
+                child: const Text('Show error dialog fragment'),
+              ),
+              Center(
+                  child:
+                      Text('Error dialog shown: $_errorDialogFragmentShown\n')),
+            ],
+          )),
+    );
+  }
+}
diff --git a/google_api_availability_android/example/pubspec.yaml b/google_api_availability_android/example/pubspec.yaml
new file mode 100644
index 0000000..54512b5
--- /dev/null
+++ b/google_api_availability_android/example/pubspec.yaml
@@ -0,0 +1,20 @@
+name: google_api_availability_example
+description: Demonstrates how to use the google_api_availability plugin.
+version: 1.0.0+1
+publish_to: none
+
+environment:
+  sdk: ">=2.15.0 <3.0.0"
+
+dependencies:
+  flutter:
+    sdk: flutter
+  google_api_availability_android:
+    path: ../
+  google_api_availability_platform_interface: ^1.0.1
+
+dev_dependencies:
+  flutter_lints: 1.0.4
+
+flutter:
+  uses-material-design: true
diff --git a/google_api_availability_android/pubspec.yaml b/google_api_availability_android/pubspec.yaml
index 7c9056e..786fed8 100644
--- a/google_api_availability_android/pubspec.yaml
+++ b/google_api_availability_android/pubspec.yaml
@@ -3,7 +3,7 @@ description: An Android implementation for the google_api_availability plugin.
 repository: https://github.com/baseflow/flutter-google-api-availability/tree/main/google_api_availability_android
 # NOTE: We strongly prefer non-breaking changes, even at the expense of a
 # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 1.0.1
+version: 1.1.0
 
 flutter:
   plugin:
diff --git a/google_api_availability_android/test/method_channel_mock.dart b/google_api_availability_android/test/method_channel_mock.dart
index ad85720..2b5da96 100644
--- a/google_api_availability_android/test/method_channel_mock.dart
+++ b/google_api_availability_android/test/method_channel_mock.dart
@@ -13,7 +13,7 @@ class MethodChannelMock {
     this.result,
     this.delay = Duration.zero,
   }) : methodChannel = MethodChannel(channelName) {
-    TestDefaultBinaryMessengerBinding.instance!.defaultBinaryMessenger
+    TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger
         .setMockMethodCallHandler(methodChannel, _handler);
   }