Flutter Quickstart
Use circlebox_flutter with optional cloud uploader and adapters.
Install From Git Tag
1) Add packages in pubspec.yaml
text
dependencies:
circlebox_flutter:
git:
url: https://github.com/jeremiahseun/circle-box.git
ref: v0.3.1
path: flutter/circlebox_flutter
circlebox_cloud_flutter:
git:
url: https://github.com/jeremiahseun/circle-box.git
ref: v0.3.1
path: flutter/circlebox_cloud_flutter
circlebox_adapters:
git:
url: https://github.com/jeremiahseun/circle-box.git
ref: v0.3.1
path: flutter/circlebox_adapters
2) Fetch dependencies
text
flutter pub get
3) Link native CircleBox SDKs (required)
circlebox_flutter is a bridge. Host app must include native SDKs.
Android:
- Download release artifacts:
circlebox-sdk-release.aarcirclebox-cloud-release.aar(optional)
- Copy to
android/app/libs/ - Add
flatDirrepo inandroid/settings.gradle - Add AAR dependencies in
android/app/build.gradle - For cloud mode, add in
android/app/src/main/AndroidManifest.xml:
text
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
iOS:
- Open
ios/Runner.xcworkspacein Xcode File->Add Package Dependencies...- URL:
https://github.com/jeremiahseun/circle-box.git - Version:
Up to Next Major0.3.1 - Add products:
CircleBoxSDK(required)CircleBoxCloud(optional)
- Run:
text
cd ios
pod install --repo-update
Core Setup
Initialize once in main() before runApp:
text
import 'package:flutter/widgets.dart';
import 'package:circlebox_flutter/circlebox_flutter.dart';
import 'package:circlebox_cloud_flutter/circlebox_cloud_flutter.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await CircleBox.start(config: const CircleBoxConfig(bufferCapacity: 200));
// Optional cloud mode.
await CircleBoxCloud.start(
const CircleBoxCloudConfig(
endpoint: Uri.parse('https://circlebox.seunjeremiah.workers.dev'),
ingestKey: 'cb_live_your_key',
flushIntervalSec: 15,
immediateFlushOnHighSignal: true,
),
);
runApp(const MyApp());
}
Call startup once. Do not call CircleBox.start from frequently rebuilt widgets.
Then use APIs anywhere in app code:
text
await CircleBox.breadcrumb('checkout_started', attrs: {'flow': 'standard'});
Pending Crash Export
text
if (await CircleBox.hasPendingCrashReport()) {
final files = await CircleBox.exportLogs(
formats: {
CircleBoxExportFormat.json,
CircleBoxExportFormat.csv,
CircleBoxExportFormat.jsonGzip,
CircleBoxExportFormat.csvGzip,
CircleBoxExportFormat.summary,
},
);
print(files);
}
Optional Cloud Upload
text
await CircleBoxCloud.start(
const CircleBoxCloudConfig(
endpoint: Uri.parse('https://circlebox.seunjeremiah.workers.dev'),
ingestKey: 'paste_ingest_key_from_control_plane',
flushIntervalSec: 15,
immediateFlushOnHighSignal: true,
),
);
Key rules:
ingestKeymust becb_live_*usageBeaconKeymust becb_usage_*when usage beacon is enabled