diff --git a/examples/cookbook/images/fading_in_images/lib/memory_main.dart b/examples/cookbook/images/fading_in_images/lib/memory_main.dart
index 71fabd53ee7..906da70ee98 100644
--- a/examples/cookbook/images/fading_in_images/lib/memory_main.dart
+++ b/examples/cookbook/images/fading_in_images/lib/memory_main.dart
@@ -1,5 +1,16 @@
+// #docregion TransparentImage
+import 'dart:convert';
+import 'dart:typed_data';
+// #enddocregion TransparentImage
+
import 'package:flutter/material.dart';
-import 'package:transparent_image/transparent_image.dart';
+
+// #docregion TransparentImage
+final Uint8List transparentImage = base64Decode(
+ 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4'
+ 'nGMAAQAABQABDQottAAAAABJRU5ErkJggg==',
+);
+// #enddocregion TransparentImage
void main() {
runApp(const MyApp());
@@ -22,7 +33,7 @@ class MyApp extends StatelessWidget {
Center(
// #docregion MemoryNetwork
child: FadeInImage.memoryNetwork(
- placeholder: kTransparentImage,
+ placeholder: transparentImage,
image: 'https://picsum.photos/250?image=9',
),
// #enddocregion MemoryNetwork
diff --git a/examples/cookbook/images/fading_in_images/pubspec.yaml b/examples/cookbook/images/fading_in_images/pubspec.yaml
index f59bdbc639f..82ccc7db550 100644
--- a/examples/cookbook/images/fading_in_images/pubspec.yaml
+++ b/examples/cookbook/images/fading_in_images/pubspec.yaml
@@ -12,8 +12,6 @@ environment:
dependencies:
flutter:
sdk: flutter
- cupertino_icons: ^1.0.9
- transparent_image: ^2.0.1
dev_dependencies:
flutter_test:
diff --git a/sites/docs/src/content/add-to-app/performance.md b/sites/docs/src/content/add-to-app/performance.md
index 96bbd3615d3..6c27b674c69 100644
--- a/sites/docs/src/content/add-to-app/performance.md
+++ b/sites/docs/src/content/add-to-app/performance.md
@@ -28,14 +28,6 @@ This happens when you construct a `FlutterEngine` for the
first time on both **[Android][android-engine]**
and **[iOS][ios-engine]** APIs.
-:::note
-Some packages allow you to share images and fonts
-from the native application to your Flutter screen.
-For example:
-* [native_font]({{site.pub-pkg}}/native_font)
-* [ios_platform_images]({{site.pub-pkg}}/ios_platform_images)
-:::
-
### Loading the Flutter library
After it's found, the engine's shared libraries are memory loaded
diff --git a/sites/docs/src/content/cookbook/images/fading-in-images.md b/sites/docs/src/content/cookbook/images/fading-in-images.md
index 84e442ea53d..2ff5d73ce49 100644
--- a/sites/docs/src/content/cookbook/images/fading-in-images.md
+++ b/sites/docs/src/content/cookbook/images/fading-in-images.md
@@ -16,25 +16,53 @@ and images would fade in as they're loaded? Use the
`FadeInImage` works with images of any type: in-memory, local assets,
or images from the internet.
-## In-Memory
+## In-memory
-In this example, use the [`transparent_image`][]
-package for a simple transparent placeholder.
+To use a single-pixel, transparent PNG as the placeholder image,
+complete the following steps:
-
-```dart
-FadeInImage.memoryNetwork(
- placeholder: kTransparentImage,
- image: 'https://picsum.photos/250?image=9',
-),
-```
+1. **Create the transparent image data.**
+
+ Import `dart:convert` and `dart:typed_data`,
+ then decode the image from a Base64-encoded string:
+
+
+ ```dart
+ import 'dart:convert';
+ import 'dart:typed_data';
+ final Uint8List transparentImage = base64Decode(
+ 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4'
+ 'nGMAAQAABQABDQottAAAAABJRU5ErkJggg==',
+ );
+ ```
+
+1. **Use the image data as a placeholder.**
+
+ Pass the decoded image data to the `placeholder` parameter:
+
+
+ ```dart
+ FadeInImage.memoryNetwork(
+ placeholder: transparentImage,
+ image: 'https://picsum.photos/250?image=9',
+ ),
+ ```
+
+{:.steps}
### Complete example
```dart
+import 'dart:convert';
+import 'dart:typed_data';
+
import 'package:flutter/material.dart';
-import 'package:transparent_image/transparent_image.dart';
+
+final Uint8List transparentImage = base64Decode(
+ 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAACklEQVR4'
+ 'nGMAAQAABQABDQottAAAAABJRU5ErkJggg==',
+);
void main() {
runApp(const MyApp());
@@ -56,7 +84,7 @@ class MyApp extends StatelessWidget {
const Center(child: CircularProgressIndicator()),
Center(
child: FadeInImage.memoryNetwork(
- placeholder: kTransparentImage,
+ placeholder: transparentImage,
image: 'https://picsum.photos/250?image=9',
),
),
@@ -72,25 +100,36 @@ class MyApp extends StatelessWidget {
## From asset bundle
-You can also consider using local assets for placeholders.
-First, add the asset to the project's `pubspec.yaml` file
-(for more details, see [Adding assets and images][]):
+To use a local image asset as the placeholder image,
+complete the following steps:
-```yaml diff
- flutter:
- assets:
-+ - assets/loading.gif
-```
+1. **Add the placeholder to the asset bundle.**
-Then, use the [`FadeInImage.assetNetwork()`][] constructor:
+ Add a placeholder image to the project's `assets` directory,
+ such as `assets/loading.gif`.
+ Then, declare the asset in the project's `pubspec.yaml` file.
+ For more details, see [Adding assets and images][].
-
-```dart
-FadeInImage.assetNetwork(
- placeholder: 'assets/loading.gif',
- image: 'https://picsum.photos/250?image=9',
-),
-```
+ ```yaml diff
+ flutter:
+ assets:
+ + - assets/loading.gif
+ ```
+
+1. **Use the asset as a placeholder.**
+
+ Pass the asset path to the `placeholder` parameter of
+ the [`FadeInImage.assetNetwork`][] constructor:
+
+
+ ```dart
+ FadeInImage.assetNetwork(
+ placeholder: 'assets/loading.gif',
+ image: 'https://picsum.photos/250?image=9',
+ ),
+ ```
+
+{:.steps}
### Complete example
@@ -130,5 +169,4 @@ class MyApp extends StatelessWidget {
[Adding assets and images]: /ui/assets/assets-and-images
[`FadeInImage`]: {{site.api}}/flutter/widgets/FadeInImage-class.html
-[`FadeInImage.assetNetwork()`]: {{site.api}}/flutter/widgets/FadeInImage/FadeInImage.assetNetwork.html
-[`transparent_image`]: {{site.pub-pkg}}/transparent_image
+[`FadeInImage.assetNetwork`]: {{site.api}}/flutter/widgets/FadeInImage/FadeInImage.assetNetwork.html
diff --git a/sites/docs/src/content/flutter-for/android-devs.md b/sites/docs/src/content/flutter-for/android-devs.md
index f31526758e2..500b016839b 100644
--- a/sites/docs/src/content/flutter-for/android-devs.md
+++ b/sites/docs/src/content/flutter-for/android-devs.md
@@ -518,7 +518,7 @@ Widget build(BuildContext context) {
In Android, there are two main use cases for `Intent`s: navigating between
Activities, and communicating with components. Flutter, on the other hand,
does not have the concept of intents, although you can still start intents
-through native integrations (using [a plugin][]).
+through native integrations, such as the [`android_intent_plus`][] plugin.
Flutter doesn't really have a direct equivalent to activities and fragments;
rather, in Flutter you navigate between screens, using a `Navigator` and
@@ -2179,14 +2179,14 @@ for accessing the camera.
### How do I log in with Facebook?
To Log in with Facebook, use the
-[`flutter_facebook_login`][] community plugin.
+[`flutter_facebook_auth`][] community plugin.
### How do I use Firebase features?
Most Firebase functions are covered by
[first party plugins][].
These plugins are first-party integrations,
-maintained by the Flutter team:
+maintained by the Flutter and Firebase teams:
* [`google_mobile_ads`][] for Google Mobile Ads for Flutter
* [`firebase_analytics`][] for Firebase Analytics
@@ -2194,7 +2194,7 @@ maintained by the Flutter team:
* [`firebase_database`][] for Firebase RTDB
* [`firebase_storage`][] for Firebase Cloud Storage
* [`firebase_messaging`][] for Firebase Messaging (FCM)
- * [`flutter_firebase_ui`][] for quick Firebase Auth integrations
+ * [`firebase_ui_auth`][] for quick Firebase Auth integrations
(Facebook, Google, Twitter and email)
* [`cloud_firestore`][] for Firebase Cloud Firestore
@@ -2379,14 +2379,14 @@ see the [`firebase_messaging`][] plugin documentation.
[`devicePixelRatio`]: {{site.api}}/flutter/dart-ui/FlutterView/devicePixelRatio.html
[DevTools]: /tools/devtools
[existing plugin]: {{site.pub}}/flutter/
-[`flutter_facebook_login`]: {{site.pub}}/packages/flutter_facebook_login
+[`flutter_facebook_auth`]: {{site.pub-pkg}}/flutter_facebook_auth
[`google_mobile_ads`]: {{site.pub}}/packages/google_mobile_ads
[`firebase_analytics`]: {{site.pub}}/packages/firebase_analytics
[`firebase_auth`]: {{site.pub}}/packages/firebase_auth
[`firebase_database`]: {{site.pub}}/packages/firebase_database
[`firebase_messaging`]: {{site.pub}}/packages/firebase_messaging
[`firebase_storage`]: {{site.pub}}/packages/firebase_storage
-[`flutter_firebase_ui`]: {{site.pub}}/packages/flutter_firebase_ui
+[`firebase_ui_auth`]: {{site.pub-pkg}}/firebase_ui_auth
[Firebase Messaging]: {{site.github}}/firebase/flutterfire/tree/master/packages/firebase_messaging
[first party plugins]: {{site.pub}}/flutter/packages?q=firebase
[Flutter for Android Developers: How to design LinearLayout in Flutter]: https://proandroiddev.com/flutter-for-android-developers-how-to-design-linearlayout-in-flutter-5d819c0ddf1a
@@ -2400,7 +2400,7 @@ see the [`firebase_messaging`][] plugin documentation.
[Material Components]: {{site.material}}/develop/flutter
[Material Design guidelines]: {{site.material}}/styles
[optimized for all platforms]: {{site.material}}/develop
-[a plugin]: {{site.pub}}/packages/android_intent
+[`android_intent_plus`]: {{site.pub-pkg}}/android_intent_plus
[pub.dev]: {{site.pub}}/flutter/packages/
[Retrieve the value of a text field]: /cookbook/forms/retrieve-input
[Shared_Preferences plugin]: {{site.pub}}/packages/shared_preferences
diff --git a/sites/docs/src/content/flutter-for/xamarin-forms-devs.md b/sites/docs/src/content/flutter-for/xamarin-forms-devs.md
index 294c2e676de..37826c1f65f 100644
--- a/sites/docs/src/content/flutter-for/xamarin-forms-devs.md
+++ b/sites/docs/src/content/flutter-for/xamarin-forms-devs.md
@@ -2336,12 +2336,13 @@ The [`camera`][] plugin is popular for accessing the camera.
### How do I log in with Facebook?
To log in with Facebook, use the
-[`flutter_facebook_login`][] community plugin.
+[`flutter_facebook_auth`][] community plugin.
### How do I use Firebase features?
Most Firebase functions are covered by [first party plugins][].
-These plugins are first-party integrations, maintained by the Flutter team:
+These plugins are first-party integrations,
+maintained by the Flutter and Firebase teams:
* [`google_mobile_ads`][] for Google Mobile Ads for Flutter
* [`firebase_analytics`][] for Firebase Analytics
@@ -2349,7 +2350,7 @@ These plugins are first-party integrations, maintained by the Flutter team:
* [`firebase_database`][] for Firebase RTDB
* [`firebase_storage`][] for Firebase Cloud Storage
* [`firebase_messaging`][] for Firebase Messaging (FCM)
- * [`flutter_firebase_ui`][] for quick Firebase Auth integrations
+ * [`firebase_ui_auth`][] for quick Firebase Auth integrations
(Facebook, Google, Twitter and email)
* [`cloud_firestore`][] for Firebase Cloud Firestore
@@ -2489,8 +2490,8 @@ For more information on using the Firebase Cloud Messaging API, see the
[`firebase_messaging`]: {{site.pub}}/packages/firebase_messaging
[`firebase_storage`]: {{site.pub}}/packages/firebase_storage
[first party plugins]: {{site.pub}}/flutter/packages?q=firebase
-[`flutter_facebook_login`]: {{site.pub}}/packages/flutter_facebook_login
-[`flutter_firebase_ui`]: {{site.pub}}/packages/flutter_firebase_ui
+[`flutter_facebook_auth`]: {{site.pub-pkg}}/flutter_facebook_auth
+[`firebase_ui_auth`]: {{site.pub-pkg}}/firebase_ui_auth
[`geolocator`]: {{site.pub}}/packages/geolocator
[`camera`]: {{site.pub-pkg}}/camera
[`http` package]: {{site.pub}}/packages/http
diff --git a/sites/docs/src/content/platform-integration/android/restore-state-android.md b/sites/docs/src/content/platform-integration/android/restore-state-android.md
index 762bbed8de8..bfa0ea38275 100644
--- a/sites/docs/src/content/platform-integration/android/restore-state-android.md
+++ b/sites/docs/src/content/platform-integration/android/restore-state-android.md
@@ -137,9 +137,6 @@ check out the following resources.
check out [Differentiate between ephemeral state
and app state][state].
-* You might want to check out packages on pub.dev that
- perform state restoration, such as [`statePersistence`][].
-
* For more information on navigation and the
[`go_router`][] package, check out [Navigation and routing][]
and the [State restoration][] topic on pub.dev.
@@ -150,5 +147,4 @@ check out the following resources.
[`RestorableProperty`]: {{site.api}}/flutter/widgets/RestorableProperty-class.html
[`restorablePush`]: {{site.api}}/flutter/widgets/Navigator/restorablePush.html
[`ScrollView`]: {{site.api}}/flutter/widgets/ScrollView/restorationId.html
-[`statePersistence`]: {{site.pub-pkg}}/state_persistence
[`TextField`]: {{site.api}}/flutter/material/TextField/restorationId.html
diff --git a/sites/docs/src/content/platform-integration/ios/apple-frameworks.md b/sites/docs/src/content/platform-integration/ios/apple-frameworks.md
index f78f665f09c..d8742d60eef 100644
--- a/sites/docs/src/content/platform-integration/ios/apple-frameworks.md
+++ b/sites/docs/src/content/platform-integration/ios/apple-frameworks.md
@@ -50,32 +50,31 @@ You might need to change app settings or initialization logic.
If that's needed, the package's "Readme" page on [pub.dev][]
should provide details.
-### Flutter Plugins and Apple Frameworks
+### Flutter plugins and Apple frameworks
-| Use Case | Apple Framework or Class | Flutter Plugin |
-|------------------------------------------------|---------------------------------------------------------------------------------------|------------------------------|
-| Access the photo library | `PhotoKit` using the `Photos` and `PhotosUI ` frameworks and `UIImagePickerController`| [`image_picker`][] |
-| Access the camera | `UIImagePickerController` using the `.camera` `sourceType` | [`image_picker`][] |
-| Use advanced camera features | `AVFoundation` | [`camera`][] |
-| Offer In-app purchases | `StoreKit` | [`in_app_purchase`][][^1] |
-| Process payments | `PassKit` | [`pay`][][^2] |
-| Send push notifications | `UserNotifications` | [`firebase_messaging`][][^3] |
-| Access GPS coordinates | `CoreLocation` | [`geolocator`][] |
-| Access sensor data[^4] | `CoreMotion` | [`sensors_plus`][] |
-| Make network requests | `URLSession` | [`http`][] |
-| Store key-values | `@AppStorage` property wrapper and `NSUserDefaults` | [`shared_preferences`][] |
-| Persist to a database | `CoreData` or SQLite | [`sqflite`][] |
-| Access health data | `HealthKit` | [`health`][] |
-| Use machine learning | `CoreML` | [`google_ml_kit`][][^5] |
-| Recognize text | `VisionKit` | [`google_ml_kit`][][^5] |
-| Recognize speech | `Speech` | [`speech_to_text`][] |
-| Use augmented reality | `ARKit` | [`ar_flutter_plugin`][] |
-| Access weather data | `WeatherKit` | [`weather`][][^6] |
-| Access and manage contacts | `Contacts` | [`contacts_service`][] |
-| Expose quick actions on the home screen | `UIApplicationShortcutItem` | [`quick_actions`][] |
-| Index items in Spotlight search | `CoreSpotlight` | [`flutter_core_spotlight`][] |
-| Configure, update and communicate with Widgets | `WidgetKit` | [`home_widget`][] |
-| Automate app actions with Siri/Shortcuts | `AppIntents` | [`intelligence`][] |
+| Use Case | Apple Framework or Class | Flutter integration |
+|------------------------------------------------|----------------------------------------------------------------------------------------|------------------------------|
+| Access the photo library | `PhotoKit` using the `Photos` and `PhotosUI ` frameworks and `UIImagePickerController` | [`image_picker`][] |
+| Access the camera | `UIImagePickerController` using the `.camera` `sourceType` | [`image_picker`][] |
+| Use advanced camera features | `AVFoundation` | [`camera`][] |
+| Offer In-app purchases | `StoreKit` | [`in_app_purchase`][][^1] |
+| Process payments | `PassKit` | [`pay`][][^2] |
+| Send push notifications | `UserNotifications` | [`firebase_messaging`][][^3] |
+| Access GPS coordinates | `CoreLocation` | [`geolocator`][] |
+| Access sensor data[^4] | `CoreMotion` | [`sensors_plus`][] |
+| Make network requests | `URLSession` | [`http`][] |
+| Store key-values | `@AppStorage` property wrapper and `NSUserDefaults` | [`shared_preferences`][] |
+| Persist to a database | `CoreData` or SQLite | [`sqflite`][] |
+| Access health data | `HealthKit` | [`health`][] |
+| Use machine learning | `CoreML` | [`google_ml_kit`][][^5] |
+| Recognize text | `VisionKit` | [`google_ml_kit`][][^5] |
+| Recognize speech | `Speech` | [`speech_to_text`][] |
+| Use augmented reality | `ARKit` | [`arkit_plugin`][] |
+| Access weather data | `WeatherKit` | [`weather`][][^6] |
+| Access and manage contacts | `Contacts` | [`flutter_contacts`][] |
+| Expose quick actions on the home screen | `UIApplicationShortcutItem` | [`quick_actions`][] |
+| Configure, update and communicate with Widgets | `WidgetKit` | [`home_widget`][] |
+| Automate app actions with Siri/Shortcuts | `AppIntents` | [`intelligence`][] |
{:.table .table-striped .nowrap}
@@ -102,14 +101,13 @@ should provide details.
[`google_ml_kit`]: {{site.pub-pkg}}/google_ml_kit
[Use a custom TensorFlow Lite model with Flutter]: {{site.firebase}}/docs/ml/flutter/use-custom-models
[`speech_to_text`]: {{site.pub-pkg}}/speech_to_text
-[`ar_flutter_plugin`]: {{site.pub-pkg}}/ar_flutter_plugin
+[`arkit_plugin`]: {{site.pub-pkg}}/arkit_plugin
[`weather`]: {{site.pub-pkg}}/weather
-[`contacts_service`]: {{site.pub-pkg}}/contacts_service
+[`flutter_contacts`]: {{site.pub-pkg}}/flutter_contacts
[`health`]: {{site.pub-pkg}}/health
[OpenWeatherMap API]: https://openweathermap.org/api
[`sqflite`]: {{site.pub-pkg}}/sqflite
[Writing platform-specific code]: /platform-integration/platform-channels
[`camera`]: {{site.pub-pkg}}/camera
-[`flutter_core_spotlight`]: {{site.pub-pkg}}/flutter_core_spotlight
[`home_widget`]: {{site.pub-pkg}}/home_widget
[`intelligence`]: {{site.pub-pkg}}/intelligence
diff --git a/sites/docs/src/content/platform-integration/macos/building.md b/sites/docs/src/content/platform-integration/macos/building.md
index 0e4e96f4ee0..385c16c997f 100644
--- a/sites/docs/src/content/platform-integration/macos/building.md
+++ b/sites/docs/src/content/platform-integration/macos/building.md
@@ -108,7 +108,7 @@ If you keep the App Sandbox enabled (which is required if you
plan to distribute your application in the [App Store][]),
you need to manage entitlements for your application
when you add certain plugins or other native functionality.
-For instance, using the [`file_chooser`][] plugin
+For instance, using the [`file_selector`][] plugin
requires adding either the
`com.apple.security.files.user-selected.read-only` or
`com.apple.security.files.user-selected.read-write` entitlement.
@@ -145,7 +145,7 @@ on the Apple Developer site.
[App Sandbox]: {{site.apple-dev}}/documentation/security/app_sandbox
[App Store]: {{site.apple-dev}}/app-store/submissions/
[Entitlements]: {{site.apple-dev}}/documentation/bundleresources/entitlements
-[`file_chooser`]: {{site.github}}/google/flutter-desktop-embedding/tree/master/plugins/file_chooser
+[`file_selector`]: {{site.pub-pkg}}/file_selector
## Hardened Runtime
diff --git a/sites/docs/src/content/resources/games-toolkit.md b/sites/docs/src/content/resources/games-toolkit.md
index aedc57a0cd7..b8a10bdf094 100644
--- a/sites/docs/src/content/resources/games-toolkit.md
+++ b/sites/docs/src/content/resources/games-toolkit.md
@@ -169,8 +169,7 @@ investigate other resources that our community recommended.
[Special effects][]
[Spriter Pro][]
- [rive][]
- [spritewidget][]
+ [rive][]
@@ -373,7 +372,6 @@ investigate other resources that our community recommended.
[game-svc-pkg]: {{site.pub-pkg}}/games_services
[rive]: {{site.pub-pkg}}/rive
[shared_preferences]: {{site.pub-pkg}}/shared_preferences
-[spritewidget]: {{site.pub-pkg}}/spritewidget
[sqflite]: {{site.pub-pkg}}/sqflite
[win32_gamepad]: {{site.pub-pkg}}/win32_gamepad
[read how the game was created in 6 weeks]: {{site.flutter-blog}}/how-we-built-the-new-super-dash-demo-in-flutter-and-flame-in-just-six-weeks-9c7aa2a5ad31
diff --git a/sites/docs/src/content/ui/navigation/url-strategies.md b/sites/docs/src/content/ui/navigation/url-strategies.md
index 5c21f633c3f..d90b2d940e4 100644
--- a/sites/docs/src/content/ui/navigation/url-strategies.md
+++ b/sites/docs/src/content/ui/navigation/url-strategies.md
@@ -78,7 +78,6 @@ This means a relative `base href` for a request to `/flutter_app/`,
[`HashUrlStrategy`]: {{site.api}}/flutter/flutter_web_plugins/HashUrlStrategy-class.html
[`PathUrlStrategy`]: {{site.api}}/flutter/flutter_web_plugins/PathUrlStrategy-class.html
[`setUrlStrategy`]: {{site.api}}/flutter/flutter_web_plugins/setUrlStrategy.html
-[`url_strategy`]: {{site.pub-pkg}}/url_strategy
[usePathUrlStrategy]: {{site.api}}/flutter/flutter_web_plugins/usePathUrlStrategy.html
[flutter_web_plugins]: {{site.api}}/flutter/flutter_web_plugins/flutter_web_plugins-library.html
[History API]: https://developer.mozilla.org/en-US/docs/Web/API/History_API