diff --git a/.github/workflows/runnable.yml b/.github/workflows/runnable.yml
index 9eb5bd52..d5bf1750 100644
--- a/.github/workflows/runnable.yml
+++ b/.github/workflows/runnable.yml
@@ -12,13 +12,17 @@ on:
     paths-ignore:
       - "**.md"
 
+env:
+  MINIMUM_FLUTTER_VERSION: '3.16.0'
+
 jobs:
   analyze:
-    name: Analyze on ${{ matrix.os }}
+    name: Analyze on ${{ matrix.os }} with ${{ matrix.flutter-version }} Flutter
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
         os: [ ubuntu-latest ]
+        flutter-version: [ min, latest ]
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-java@v4
@@ -28,6 +32,7 @@ jobs:
       - uses: subosito/flutter-action@v2
         with:
           channel: 'stable'
+          flutter-version: ${{ matrix.flutter-version == 'min' && env.MINIMUM_FLUTTER_VERSION || '' }}
       - name: Log Dart/Flutter versions
         run: |
           dart --version
@@ -47,8 +52,11 @@ jobs:
 
   test_iOS:
     needs: analyze
-    name: Test iOS
+    name: Test iOS with ${{ matrix.flutter-version }} Flutter
     runs-on: macos-latest
+    strategy:
+      matrix:
+        flutter-version: [ min, latest ]
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-java@v4
@@ -58,6 +66,7 @@ jobs:
       - uses: subosito/flutter-action@v2.8.0
         with:
           channel: stable
+          flutter-version: ${{ matrix.flutter-version == 'min' && env.MINIMUM_FLUTTER_VERSION || '' }}
       - run: dart --version
       - run: flutter --version
       - run: flutter pub get
@@ -65,8 +74,11 @@ jobs:
 
   test_android:
     needs: analyze
-    name: Test Android
+    name: Test Android with ${{ matrix.flutter-version }} Flutter
     runs-on: ubuntu-latest
+    strategy:
+      matrix:
+        flutter-version: [ min, latest ]
     steps:
       - uses: actions/checkout@v4
       - uses: actions/setup-java@v4
@@ -76,6 +88,7 @@ jobs:
       - uses: subosito/flutter-action@v2.8.0
         with:
           channel: stable
+          flutter-version: ${{ matrix.flutter-version == 'min' && env.MINIMUM_FLUTTER_VERSION || '' }}
       - run: dart --version
       - run: flutter --version
       - run: flutter pub get
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9d0dced6..e69eff09 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,12 @@ that can be found in the LICENSE file. -->
 
 *None.*
 
+## 9.3.3
+
+### Fixes
+
+- Recovers the compatibility with Flutter 3.16.
+
 ## 9.3.2
 
 ### Improvements
diff --git a/example/pubspec.yaml b/example/pubspec.yaml
index 8c3ac8d2..c91ecf88 100644
--- a/example/pubspec.yaml
+++ b/example/pubspec.yaml
@@ -1,6 +1,6 @@
 name: wechat_assets_picker_demo
 description: The demo project for the wechat_assets_picker package.
-version: 9.3.2+60
+version: 9.3.3+61
 publish_to: none
 
 environment:
diff --git a/lib/src/delegates/asset_picker_builder_delegate.dart b/lib/src/delegates/asset_picker_builder_delegate.dart
index 96c402c1..cff1802c 100644
--- a/lib/src/delegates/asset_picker_builder_delegate.dart
+++ b/lib/src/delegates/asset_picker_builder_delegate.dart
@@ -1500,11 +1500,11 @@ class DefaultAssetPickerBuilderDelegate
               hint += ', ${asset.title}';
             }
             return Semantics(
+              key: ValueKey('${asset.id}-semantics'),
               button: false,
               enabled: !isBanned,
               excludeSemantics: true,
               focusable: !isSwitchingPath,
-              identifier: asset.id,
               label: '${semanticsTextDelegate.semanticTypeLabel(asset.type)}'
                   '${semanticIndex(index)}, '
                   '${asset.createDateTime.toString().replaceAll('.000', '')}',
diff --git a/pubspec.yaml b/pubspec.yaml
index bca3d36d..4a02d12c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: wechat_assets_picker
-version: 9.3.2
+version: 9.3.3
 description: |
   An image picker (also with videos and audio)
   for Flutter projects based on WeChat's UI,