A Flutter E-commerce demo application with full Embrace SDK integration for mobile telemetry demonstration.
This app is a Flutter port of the iOS Embrace E-commerce app, designed to showcase Embrace SDK telemetry capabilities across both iOS and Android platforms.
- Product Catalog: Browse featured products, new arrivals, and daily deals
- Search: Search products with recent search history
- Shopping Cart: Add/remove items, quantity management, persistent cart
- Checkout: 4-step checkout flow (Cart Review → Shipping → Payment → Confirmation)
- User Profile: Edit profile, manage addresses, payment methods, order history
- Authentication: Email, Google Sign-In, Biometric (Face ID/Touch ID), Guest checkout
- Spans: Performance tracking for all API calls and user flows
- Logs: Info, Warning, Error, Debug levels with custom properties
- Breadcrumbs: User journey tracking across screens
- Session Properties: User context and metadata
- User Identification: User ID and persona tracking
- Crash Reporting: Intentional crash simulation for testing
- Product views
- Add to cart / Remove from cart
- Cart viewed
- Checkout started / step completed
- Purchase attempt / success / failure
CHECKOUT_STARTEDSHIPPING_INFORMATION_COMPLETEDCHECKOUT_SHIPPING_COMPLETEDSTRIPE_PAYMENT_PROCESSING_STARTEDSTRIPE_PAYMENT_PROCESSING_SUCCESS/FAILEDCHECKOUT_PAYMENT_COMPLETEDPLACE_ORDER_INITIATEDORDER_DETAILS_API_COMPLETEDORDER_PLACED_SUCCESS/FAILED
- Login attempts (by method)
- Login success/failure
- User logout
- Flutter SDK 3.0.0+
- iOS 13.0+ / Android API 21+
- Embrace App ID and API Token
-
Install Flutter dependencies:
cd embrace_ecommerce_flutter flutter pub get -
Configure Embrace SDK (config files are gitignored for security):
iOS:
cp ios/Runner/EmbraceConfig.plist.sample ios/Runner/EmbraceConfig.plist
Then edit
ios/Runner/EmbraceConfig.plistand replaceYOUR_EMBRACE_APP_IDwith your actual app ID.Important: After running
flutter pub get, openios/Runner.xcworkspacein Xcode and addEmbraceConfig.plistto the Runner target:- Right-click on Runner folder → Add Files to "Runner"
- Select
EmbraceConfig.plist - Ensure "Copy items if needed" is unchecked and target membership includes Runner
Android:
cp android/app/src/main/embrace-config.json.sample android/app/src/main/embrace-config.json
Then edit
android/app/src/main/embrace-config.jsonand replace placeholders with your credentials. -
Run the app:
flutter run
lib/
├── main.dart # App entry point
├── models/ # Data models
├── services/ # Business logic
│ ├── embrace_service.dart # Embrace SDK wrapper
│ ├── api_service.dart # API client
│ ├── mock_data_service.dart # Mock data
│ └── auth_service.dart # Authentication
├── providers/ # State management (Provider)
│ ├── auth_provider.dart
│ ├── cart_provider.dart
│ ├── product_provider.dart
│ └── checkout_provider.dart
├── screens/ # UI screens
│ ├── home/
│ ├── search/
│ ├── cart/
│ ├── profile/
│ ├── product/
│ ├── checkout/
│ └── auth/
├── widgets/ # Reusable components
└── utils/ # Constants and utilities
- State Management: Provider
- Navigation: go_router with nested navigation
- Architecture Pattern: Service/Provider pattern (similar to iOS MVVM)
| Feature | Implementation |
|---|---|
| Spans | Embrace.instance.startSpan() |
| Logs | Embrace.instance.logInfo/Warning/Error() |
| Breadcrumbs | Embrace.instance.addBreadcrumb() |
| Session Properties | Embrace.instance.addSessionProperty() |
| User ID | Embrace.instance.setUserIdentifier() |
| User Persona | Embrace.instance.addUserPersona() |
- View Sessions: Check Embrace dashboard for active sessions
- Test Spans: Navigate through the app, perform actions
- Test Breadcrumbs: Complete a checkout flow
- Test Crash Reporting: Use Profile → Force Crash button
embrace- Embrace Flutter SDKprovider- State managementgo_router- Navigationshared_preferences- Local storagecached_network_image- Image cachinglocal_auth- Biometric authentication