shorebird_code_push 2.0.4
shorebird_code_push: ^2.0.4 copied to clipboard
Check for and download Shorebird code push updates from your app.
Shorebird Code Push #
A Dart package for communicating with the Shorebird Code Push Updater. Use this in your Shorebird app to:
- ✅ Get the currently installed patch version
- ✅ Check whether a new patch is available
- ✅ Download new patches
Getting Started #
If your Flutter app does not already use Shorebird, follow our Getting Started Guide to add code push to your app.
Installation #
flutter pub add shorebird_code_push
Usage #
After adding the package to your pubspec.yaml
, you can use it in your app like
this:
// Import the library
import 'package:shorebird_code_push/shorebird_code_push.dart';
// Launch your app
void main() => runApp(const MyApp());
// [Other code here]
class _MyHomePageState extends State<MyHomePage> {
// Create an instance of the updater class
final updater = ShorebirdUpdater();
@override
void initState() {
super.initState();
// Get the current patch number and print it to the console.
// It will be `null` if no patches are installed.
updater.readCurrentPatch().then((currentPatch) {
print('The current patch number is: ${currentPatch?.number}');
});
}
Future<void> _checkForUpdates() async {
// Check whether a new update is available.
final status = await updater.checkForUpdate();
if (status == UpdateStatus.outdated) {
try {
// Perform the update
await updater.update();
} on UpdateException catch (error) {
// Handle any errors that occur while updating.
}
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
// [Other code here]
ElevatedButton(
child: Text('Check for update'),
onPressed: _checkForUpdates,
)
// [Other code here]
);
}
}
See the example for a complete working app.
Tracks #
Shorebird also supports publishing patches to different tracks, which can be used to target different segments of your user base. See https://docs.shorebird.dev/code-push/guides/percentage-based-rollouts/ for a guide on using this functionality to implement percentage-based rollouts.
You must first publish a patch to a specific track (patches are published to the
stable
track by default). To publish a patch to a different track, update your
patch command to use the --track
argument:
shorebird patch android --track beta
(We're just using Android for this example. Tracks are supported on all platforms).
To check for updates on a given track, simply pass an UpdateTrack
to
checkForUpdate
and update
. For example, this:
final status = await updater.checkForUpdate();
if (status == UpdateStatus.outdated) {
await updater.update();
}
Becomes this:
final status = await updater.checkForUpdate(track: UpdateTrack.beta);
if (status == UpdateStatus.outdated) {
await updater.update(track: UpdateTrack.beta);
}
You can also use custom track names. When creating a patch, specify a track name like this:
shorebird patch android --track my-custom-track
And:
const track = UpdateTrack('my-custom-track');
final status = await updater.checkForUpdate(track: track);
if (status == UpdateStatus.outdated) {
await updater.update(track: track);
}
Join us on Discord! #
We have an active Discord server where you can ask questions and get help.
Contributing #
See CONTRIBUTING.md.