Game Framework
Package Management

Package Overview

Understand the package lifecycle, concepts, and management in Game Framework.

What is a Package?

A package is a reusable Flutter library that contains:

  • Dart/Flutter code
  • Assets and resources
  • Documentation
  • Metadata (pubspec.yaml)
  • Multiple versions

Package Lifecycle

graph LR
    Create[Create Package] --> Publish[Publish Version]
    Publish --> Use[Use in Projects]
    Use --> Update[Publish Update]
    Update --> Use
    Use --> Deprecate[Deprecate]
    Deprecate --> Delete[Delete]

1. Creation

curl -X POST https://registry.yourcompany.com/v1/workspaces/ws_ID/packages \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"name":"my_package","description":"My package"}'

2. Publishing Versions

flutter pub publish --server=https://registry.yourcompany.com

3. Distribution

Team members install via pubspec.yaml:

dependencies:
  my_package:
    hosted:
      name: my_package
      url: https://registry.yourcompany.com
    version: ^1.0.0

4. Updates

Publish new versions:

# Update version in pubspec.yaml
version: 1.1.0

# Publish
flutter pub publish --server=https://registry.yourcompany.com

5. Deprecation

Mark packages as deprecated:

curl -X POST https://registry.yourcompany.com/v1/packages/pkg_ID/deprecate \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"message":"Use new_package instead"}'

6. Deletion

Permanently delete packages (requires owner permission):

curl -X DELETE https://registry.yourcompany.com/v1/packages/pkg_ID \
  -H "Authorization: Bearer YOUR_TOKEN"

Package Structure

my_package/
├── lib/
│   ├── my_package.dart       # Main export file
│   └── src/
│       ├── feature_a.dart
│       └── feature_b.dart
├── test/
│   └── my_package_test.dart
├── example/
│   └── main.dart
├── CHANGELOG.md
├── LICENSE
├── README.md
└── pubspec.yaml

Package Metadata

Essential fields in pubspec.yaml:

name: my_package               # Required: unique name
version: 1.0.0                 # Required: semantic version
description: Description...    # Required: 60+ characters
homepage: https://github...    # Recommended
repository: https://github...  # Recommended
publish_to: https://registry.yourcompany.com  # Important!

environment:
  sdk: '>=3.0.0 <4.0.0'
  flutter: ">=3.10.0"

dependencies:
  flutter:
    sdk: flutter

Package Types

1. Pure Dart Packages

No Flutter dependency:

dependencies:
  http: ^1.1.0
  # No flutter dependency

2. Flutter Packages

Depend on Flutter SDK:

dependencies:
  flutter:
    sdk: flutter

3. Plugin Packages

Platform-specific code:

flutter:
  plugin:
    platforms:
      android:
        package: com.company.plugin
        pluginClass: MyPlugin
      ios:
        pluginClass: MyPlugin

Package Limits

PlanMax PackagesStorageBandwidth
Free55 GB50 GB/month
Pro50100 GB500 GB/month
EnterpriseUnlimitedUnlimitedUnlimited

See Billing Plans for details.

Package Operations

List Packages

curl https://registry.yourcompany.com/v1/workspaces/ws_ID/packages \
  -H "Authorization: Bearer YOUR_TOKEN"

Get Package Details

curl https://registry.yourcompany.com/v1/packages/my_package \
  -H "Authorization: Bearer YOUR_TOKEN"

Update Package Metadata

curl -X PATCH https://registry.yourcompany.com/v1/packages/pkg_ID \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -d '{"description":"Updated description"}'

Search Packages

curl "https://registry.yourcompany.com/v1/packages?q=auth" \
  -H "Authorization: Bearer YOUR_TOKEN"

Next Steps

Ready to publish? See Publishing Guide