Package selection guidance compiled from public package information, community data, and project usage.
Flutter Wallet Card is a plugin that enables iOS and Android apps to generate Apple Wallet passes and Google Wallet cards using local files or web URLs. It simplifies the integration of digital wallets into Flutter applications, allowing users to add tickets, boarding passes, loyalty cards, and more directly from the app. The plugin supports both platforms and leverages native wallet APIs through platform channels. It's ideal for apps requiring seamless digital wallet interactions with minimal setup.
Use cases
Adding loyalty cards to Apple Wallet
Generating boarding passes for travel apps
Creating event tickets for ticketing apps
Enabling digital gift cards
Supporting membership cards in fitness apps
Key features
Supports Apple Wallet and Google Wallet
Generates passes from local files or URLs
Cross-platform (iOS and Android)
Simple API for pass generation
Secure file handling
Platform channel integration
Suitable for
Travel and event apps
Retail and loyalty programs
Fitness and membership services
Digital ticketing systems
Mobile banking and payment apps
Considerations
Requires proper pass file formatting
Needs valid certificates for Apple Wallet
Google Wallet integration requires specific setup
Limited to supported pass types
File size and format constraints apply
Original README
Original README snapshot from the linked source repository. Visit the repository for the latest content.
Flutter Wallet Card
A comprehensive Flutter plugin for creating and managing wallet cards on both iOS (Apple Wallet) and Android (Google Wallet). This plugin provides a unified API for generating, adding, and managing wallet passes across platforms.
Features
Cross-Platform Support
iOS: Full Apple Wallet (Passkit) integration
Android: Google Wallet integration
Unified API: Single codebase for both platforms
Card Operations
✅ Check wallet availability
✅ Add cards to wallet
✅ Check if card is already added
✅ View cards in wallet
✅ Generate card files from data
✅ Parse existing card files
✅ Download cards from URLs
Card Types Supported
Generic Cards: General purpose cards
Boarding Passes: Flight tickets
Coupons: Discount and promotional cards
Event Tickets: Concert, sports, and event passes
Store Cards: Loyalty and membership cards
Advanced Features
🎨 Custom colors and styling
📍 Location-based relevance
📅 Date-based relevance
🔒 Secure certificate signing (iOS)
🌐 Network download support
🧪 Comprehensive test coverage
Installation
Add this to your package's pubspec.yaml file:
dependencies:flutter_wallet_card:^5.0.0
Then run:
flutter pub get
Platform Setup
iOS Setup
Enable Wallet capability in your iOS project:
Open ios/Runner.xcworkspace in Xcode
Select your target → Signing & Capabilities
Add "Wallet" capability
Configure your Apple Developer account:
Create a Pass Type ID in Apple Developer Console
Generate certificates for pass signing
Android Setup
Add Google Wallet API to your project:
Enable Google Wallet API in Google Cloud Console
Configure OAuth 2.0 credentials
Ensure your app uses play-services-pay (automatically included by the plugin):
// Generate a card file for sharing or storageFile cardFile = awaitFlutterWalletCard.generateCardFile(card);
print('Card file created at: ${cardFile.path}');
Adding Cards from URLs
// Download and add a card from a URLtry {
bool success = awaitFlutterWalletCard.addFromUrl(
'https://example.com/mycard.pkpass',
);
print('Card added: $success');
} catch (e) {
print('Failed to add card from URL: $e');
}
Parsing Existing Card Files
// Parse a wallet card from a local fileWalletCard card = awaitFlutterWalletCard.parseFromFile(File('/path/to/card.pkpass'));
print('Card title: ${card.metadata.title}');
Platform-Specific Features
// iOS: Add multiple cards at onceif (Platform.isIOS) {
List<WalletCard> cards = [card1, card2, card3];
bool success = awaitFlutterWalletCard.addMultipleToWallet(cards);
}
// Android: Save pass with JWTif (Platform.isAndroid) {
String jwt = 'your-google-wallet-jwt';
bool success = awaitFlutterWalletCard.savePassWithJwt(jwt);
// Create a pass linkString link = awaitFlutterWalletCard.createPassLink({
'objectId': 'your-object-id',
});
}