This guide helps you verify that flutter_blue_ultra is ready for publishing to pub.dev.
- Flutter SDK: Ensure you have the latest stable Flutter SDK installed
- pub.dev account: You need a verified pub.dev publisher account
- GitHub repository: The package should be in a public GitHub repository
All platform packages must use the same version of flutter_blue_ultra_platform_interface as the main package.
Status: Fixed - All packages now use 8.0.0
Since this is a fork of flutter_blue_plus, verify no stale references remain:
grep -r "flutter_blue_plus" packages/ --include="*.dart" --include="*.yaml" --include="*.md"All results should be zero. Any hits must be renamed to flutter_blue_ultra.
Run Dart's automated migration tool to fix any auto-fixable deprecations:
cd packages/flutter_blue_ultra
dart fix --applyRepeat for each platform package.
cd packages/flutter_blue_ultra
flutter analyzeThis checks for:
- Dart analysis issues
- Linter rule violations
- Code style problems
cd packages/flutter_blue_ultra
flutter testRepeat for each platform package that has tests.
Check that your pubspec.yaml has:
- ✅
name:flutter_blue_ultra(lowercase, underscores) - ✅
version: Semantic version (e.g.,2.0.0) - ✅
description: Clear, concise description - ✅
homepage: Valid URL - ✅
repository: GitHub repo URL - ✅
issue_tracker: GitHub issues URL - ✅
topics: Relevant tags for discoverability (e.g.,bluetooth,ble) - ✅
environment: SDK and Flutter constraints - ✅ All dependencies are available on pub.dev
Verify all dependencies exist on pub.dev:
flutter_blue_ultra_platform_interface: 8.0.0- Must be published firstflutter_blue_ultra_android: 8.0.0- Must be published firstflutter_blue_ultra_darwin: 8.0.0- Must be published firstflutter_blue_ultra_linux: 8.0.0- Must be published firstflutter_blue_ultra_web: 8.0.0- Must be published first
Ensure a .pubignore file exists in each package root to exclude files that should not be uploaded to pub.dev (native build artifacts, test fixtures, CI config, etc.). Note: .pubignore takes precedence over .gitignore for pub uploads.
Public APIs need dartdoc comments for full pub points. Generate and validate docs:
cd packages/flutter_blue_ultra
dart doc --validate-linksFix any broken links or missing documentation warnings before publishing.
pana simulates the exact score pub.dev will assign your package. Run it before publishing to catch issues early:
dart pub global activate pana
cd packages/flutter_blue_ultra
pana .Target score: 130/130. Address any reported issues — common point losses are missing API docs, missing repository field, and platform support gaps.
Test the publishing process without actually publishing:
cd packages/flutter_blue_ultra
flutter pub publish --dry-runThis will check for:
- Missing required fields
- Invalid version numbers
- Dependency issues
- File size limits
- Missing LICENSE file
- Missing CHANGELOG.md
Build and run the example app on at least one platform:
cd packages/flutter_blue_ultra/example
flutter pub get
flutter runTest on:
- ✅ Android (if available)
- ✅ iOS (if available)
- ✅ macOS (if available)
- ✅ Linux (if available)
- ✅ Web (if available)
Check that documentation files exist and are complete:
- ✅
README.md- Main documentation - ✅
CHANGELOG.md- Version history - ✅
LICENSE- License file - ✅
docs/- Additional documentation
Ensure the package structure follows pub.dev requirements:
- ✅
lib/directory with Dart code - ✅
example/directory (optional but recommended) - ✅ No unnecessary files (use
.pubignore)
Publish in this order:
flutter_blue_ultra_platform_interface(8.0.0)flutter_blue_ultra_android(8.0.0)flutter_blue_ultra_darwin(8.0.0)flutter_blue_ultra_linux(8.0.0)flutter_blue_ultra_web(8.0.0)flutter_blue_ultra(2.0.0) - Last
For each package:
cd packages/<package_name>
flutter pub publish --dry-run # Test first
flutter pub publish # Then publishAfter publishing each package:
- Check it appears on pub.dev
- Verify the version number is correct
- Check that dependencies resolve correctly
- Test installing it in a fresh project
Solution: Ensure all platform packages are published first
Solution: Check that all packages use consistent version numbers
Solution: Ensure LICENSE file exists in the package root
Solution: Use .pubignore to exclude unnecessary files
Solution: Run pana . locally to identify and fix specific point losses before publishing
Solution: Run the grep command in step 2 and rename all occurrences
Run this script to test all packages:
#!/bin/bash
# Test all packages for pub.dev readiness
PACKAGES=(
"flutter_blue_ultra_platform_interface"
"flutter_blue_ultra_android"
"flutter_blue_ultra_darwin"
"flutter_blue_ultra_linux"
"flutter_blue_ultra_web"
"flutter_blue_ultra"
)
for package in "${PACKAGES[@]}"; do
echo "Testing $package..."
cd "packages/$package"
dart fix --apply
flutter analyze
flutter test
flutter pub publish --dry-run
cd ../..
done- No leftover
flutter_blue_plusreferences -
dart fix --applyrun on all packages - All platform packages published successfully
- All dependencies resolve correctly
-
flutter analyzepasses with no errors -
flutter testpasses -
dart doc --validate-linkspasses with no warnings -
pana .scores 130/130 (or known gaps are accepted) -
flutter pub publish --dry-runpasses -
.pubignoreexists in each package -
pubspec.yamlhasrepository,issue_tracker, andtopicsfields - Example app builds and runs
- README.md is complete and accurate
- CHANGELOG.md is up to date
- LICENSE file exists
- Version numbers are correct and consistent
When ready to publish:
cd packages/flutter_blue_ultra
flutter pub publishYou'll be prompted for:
- OAuth2 authentication (pub.dev account)
- Confirmation of the package details