gravity_sdk 0.9.1
gravity_sdk: ^0.9.1 copied to clipboard
Gravity SDK
example/lib/main.dart
import 'package:example/visit_screen.dart';
import 'package:flutter/material.dart' hide Action;
import 'package:gravity_sdk/gravity_sdk.dart';
import 'package:gravity_sdk/src/models/external/campaign.dart';
import 'package:gravity_sdk/src/models/internal/campaign_content.dart';
import 'inline_screen.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await GravitySDK.instance.initialize(
apiKey: 'ODMzODkwMDI3NDE0ZjU5MWU1N2YxYjU0MWZiODc5YmFhY2JjMDE4MWFmNDZjZDA4YTBlZjgyYzM1NmQ2N2NhZQ==',
section: '675ac4c77fa09ceba700137a',
productWidgetBuilder: CustomProductWidgetBuilder(),
gravityEventCallback: (TrackingEvent event) {
print('event: $event');
},
);
runApp(MyApp());
}
class CustomProductWidgetBuilder extends ProductWidgetBuilder {
@override
Widget build({
required BuildContext context,
required Slot product,
required CampaignContent content,
required Campaign campaign,
}) {
return Container(
width: 20,
color: Colors.amber,
height: 20,
);
}
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: Theme.of(context).colorScheme.inversePrimary,
title: Text('Gravity SDK Example'),
automaticallyImplyLeading: false,
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
_InlineButton(),
_VisitButton(),
_SendAddToCartEvent(),
SizedBox(height: 32),
],
),
),
);
}
}
class _InlineButton extends StatelessWidget {
const _InlineButton();
@override
Widget build(BuildContext context) {
return FilledButton(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all(Colors.green),
),
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const InlineScreen(),
),
);
},
child: Text('Go To Inline'),
);
}
}
class _SendAddToCartEvent extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FilledButton(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all(Colors.green),
),
onPressed: () async {
final events = [
AddToCartEvent(
value: 118.26,
currency: 'RUB',
productId: 'item-34454',
quantity: 2,
cart: [
CartItem(productId: 'sku-123', quantity: 2, itemPrice: 59.99),
CartItem(productId: 'sku-456', quantity: 1, itemPrice: 69.99),
],
),
CustomEvent(type: 'new_type', name: 'New name'),
];
GravitySDK.instance.triggerEvent(
context: context,
events: events,
pageContext: PageContext(
type: ContextType.cart,
data: ['checkout'],
location: 'app://checkout',
),
);
},
child: Text('Send Add To Cart Event'),
);
}
}
class _VisitButton extends StatelessWidget {
const _VisitButton();
@override
Widget build(BuildContext context) {
return FilledButton(
style: ButtonStyle(
backgroundColor: WidgetStateProperty.all(Colors.green),
),
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => const VisitScreen(),
),
);
},
child: Text('Go To Visit'),
);
}
}