Skip to content

Commit 5b73a31

Browse files
Merge pull request #107 from qonversion/feature/sampleApp
Feature/sample app
2 parents d2e85e4 + 13fb6b9 commit 5b73a31

File tree

3 files changed

+72
-62
lines changed

3 files changed

+72
-62
lines changed

example/lib/home.dart

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ class HomeView extends StatefulWidget {
1010
}
1111

1212
class _HomeViewState extends State<HomeView> {
13-
QLaunchResult _qLaunchResult;
13+
Map<String, QPermission> _permissions;
14+
Map<String, QProduct> _products;
1415

1516
@override
1617
void initState() {
1718
super.initState();
18-
initPlatformState();
19+
_initPlatformState();
1920
}
2021

2122
@override
@@ -25,25 +26,15 @@ class _HomeViewState extends State<HomeView> {
2526
title: const Text('Qonversion example app'),
2627
),
2728
body: Center(
28-
child: _qLaunchResult == null
29+
child: _products == null && _permissions == null
2930
? CircularProgressIndicator()
3031
: ListView(
3132
children: [
3233
Padding(padding: EdgeInsets.only(top: 20)),
33-
ListTile(
34-
title: Text('UID'),
35-
subtitle: Text(_qLaunchResult.uid),
36-
),
37-
ListTile(
38-
title: Text('DateTime'),
39-
subtitle: Text(_qLaunchResult.date?.toString() ?? 'n/a'),
40-
),
4134
ListTile(title: Text('PRODUCTS:')),
42-
...productsFromMap(_qLaunchResult.products),
35+
..._productsFromMap(_products ?? {}),
4336
ListTile(title: Text('PERMISSIONS:')),
44-
..._permissionsFromMap(_qLaunchResult.permissions),
45-
ListTile(title: Text('USER PRODUCTS:')),
46-
...productsFromMap(_qLaunchResult.userProducts),
37+
..._permissionsFromMap(_permissions ?? {}),
4738
Padding(
4839
padding: const EdgeInsets.all(8.0),
4940
child: FlatButton(
@@ -101,16 +92,29 @@ class _HomeViewState extends State<HomeView> {
10192
);
10293
}
10394

104-
Future<void> initPlatformState() async {
95+
Future<void> _initPlatformState() async {
10596
if (kDebugMode) {
106-
await Qonversion.setDebugMode();
97+
Qonversion.setDebugMode();
10798
}
10899

109-
_qLaunchResult = await Qonversion.launch(
100+
Qonversion.launch(
110101
'PV77YHL7qnGvsdmpTs7gimsxUvY-Znl2',
111102
isObserveMode: false,
112103
);
113104

105+
_loadQonversionObjects();
106+
}
107+
108+
Future<void> _loadQonversionObjects() async {
109+
try {
110+
_products = await Qonversion.products();
111+
_permissions = await Qonversion.checkPermissions();
112+
} catch (e) {
113+
print(e);
114+
_products = {};
115+
_permissions = {};
116+
}
117+
114118
setState(() {});
115119
}
116120

@@ -136,24 +140,24 @@ class _HomeViewState extends State<HomeView> {
136140
)
137141
.toList();
138142
}
139-
}
140143

141-
List<Widget> productsFromMap(Map<String, QProduct> products) {
142-
return products.entries
143-
.map<Widget>(
144-
(e) => ListTile(
145-
title: Text(e.key),
146-
subtitle: Text(
147-
e.value.qonversionId ??
148-
'' + '\n' + e.value.storeId ??
149-
'' +
150-
'\n' +
151-
e.value.duration.toString() +
152-
'\n' +
153-
e.value.type.toString() +
154-
'\n',
144+
List<Widget> _productsFromMap(Map<String, QProduct> products) {
145+
return products.entries
146+
.map<Widget>(
147+
(e) => ListTile(
148+
title: Text(e.key),
149+
subtitle: Text(
150+
e.value.qonversionId ??
151+
'' + '\n' + e.value.storeId ??
152+
'' +
153+
'\n' +
154+
e.value.duration.toString() +
155+
'\n' +
156+
e.value.type.toString() +
157+
'\n',
158+
),
155159
),
156-
),
157-
)
158-
.toList();
160+
)
161+
.toList();
162+
}
159163
}

example/lib/params_view.dart

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,17 @@ class ParamsView extends StatelessWidget {
2121
child: Text('Set User ID'),
2222
color: Colors.green,
2323
textColor: Colors.white,
24-
onPressed: () async {
25-
await Qonversion.setUserId('customId');
24+
onPressed: () {
25+
Qonversion.setUserId('customId');
2626
print('did set user id');
2727
},
2828
),
2929
FlatButton(
3030
child: Text('Set User Property'),
3131
color: Colors.blue,
3232
textColor: Colors.white,
33-
onPressed: () async {
34-
await Qonversion.setUserProperty(
35-
'customProperty', 'customValue');
33+
onPressed: () {
34+
Qonversion.setUserProperty('customProperty', 'customValue');
3635
print('did set user property');
3736
},
3837
),
@@ -41,8 +40,8 @@ class ParamsView extends StatelessWidget {
4140
child: Text('Set ${describeEnum(v)}'),
4241
color: Colors.purple,
4342
textColor: Colors.white,
44-
onPressed: () async {
45-
await Qonversion.setProperty(v, '[email protected]');
43+
onPressed: () {
44+
Qonversion.setProperty(v, '[email protected]');
4645
print('did set property');
4746
},
4847
),

example/lib/products_view.dart

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,9 @@ class _ProductsViewState extends State<ProductsView> {
3737
orElse: () => null);
3838

3939
print(permission?.isActive);
40-
} catch (e) {
40+
} on QPurchaseException catch (e) {
41+
// check if a user canceled the purchase
42+
// e.isUserCancelled
4143
print(e);
4244
}
4345
});
@@ -77,11 +79,15 @@ class _ProductsViewState extends State<ProductsView> {
7779
color: Colors.yellow,
7880
textColor: Colors.black,
7981
onPressed: () async {
80-
final res =
81-
await Qonversion.checkTrialIntroEligibility(
82-
_products.keys.toList());
83-
print(res.map(
84-
(key, value) => MapEntry(key, value.status)));
82+
try {
83+
final res =
84+
await Qonversion.checkTrialIntroEligibility(
85+
_products.keys.toList());
86+
print(res.map(
87+
(key, value) => MapEntry(key, value.status)));
88+
} catch (e) {
89+
print(e);
90+
}
8591
},
8692
),
8793
),
@@ -116,10 +122,7 @@ class _ProductsViewState extends State<ProductsView> {
116122
children: [
117123
ListTile(
118124
title: Text('Store ID: ${product.storeId}'),
119-
subtitle: Text('Q ID: ${product.qonversionId}'),
120-
trailing: product.skProduct != null
121-
? Text(product.skProduct.localizedTitle)
122-
: null,
125+
subtitle: Text('Q ID: ${product.qonversionId}.\nStore Title: ${product.storeTitle}'),
123126
onTap: () => print(product.toJson()),
124127
),
125128
Padding(
@@ -129,12 +132,19 @@ class _ProductsViewState extends State<ProductsView> {
129132
color: Colors.blue,
130133
textColor: Colors.white,
131134
onPressed: () async {
132-
final permissions = await Qonversion.purchase(product.qonversionId);
133-
final permission = permissions.values.firstWhere(
134-
(element) => element.productId == product.qonversionId,
135-
orElse: () => null);
136-
137-
print(permission?.isActive);
135+
try {
136+
final permissions =
137+
await Qonversion.purchaseProduct(product);
138+
final permission = permissions.values.firstWhere(
139+
(element) => element.productId == product.qonversionId,
140+
orElse: () => null);
141+
142+
print(permission?.isActive);
143+
} on QPurchaseException catch (e) {
144+
// check if a user canceled the purchase
145+
// e.isUserCancelled
146+
print(e);
147+
}
138148
},
139149
),
140150
),
@@ -176,9 +186,6 @@ class _ProductsViewState extends State<ProductsView> {
176186
ListTile(
177187
title: Text('Store ID: ${product.storeId}'),
178188
subtitle: Text('Q ID: ${product.qonversionId}'),
179-
trailing: product.skProduct != null
180-
? Text(product.skProduct.localizedTitle)
181-
: null,
182189
)
183190
];
184191
}

0 commit comments

Comments
 (0)