Skip to content

Commit 4407b5a

Browse files
authored
[in_app_purchase_platform_interface] Added additional fields to ProductDetails (flutter#3826)
1 parent 50f9ee9 commit 4407b5a

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

packages/in_app_purchase/in_app_purchase_platform_interface/lib/src/types/product_details.dart

+11
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ class ProductDetails {
1010
required this.title,
1111
required this.description,
1212
required this.price,
13+
required this.rawPrice,
14+
required this.currencyCode,
1315
});
1416

1517
/// The identifier of the product.
@@ -31,4 +33,13 @@ class ProductDetails {
3133
///
3234
/// For example, on iOS it is specified in App Store Connect; on Android, it is specified in Google Play Console.
3335
final String price;
36+
37+
/// The unformatted price of the product, specified in the App Store Connect or Sku in Google Play console based on the platform.
38+
/// The currency unit for this value can be found in the [currencyCode] property.
39+
/// The value always describes full units of the currency. (e.g. 2.45 in the case of $2.45)
40+
final double rawPrice;
41+
42+
/// The currency code for the price of the product.
43+
/// Based on the price specified in the App Store Connect or Sku in Google Play console based on the platform.
44+
final String currencyCode;
3445
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
// Copyright 2013 The Flutter Authors. All rights reserved.
2+
// Use of this source code is governed by a BSD-style license that can be
3+
// found in the LICENSE file.
4+
5+
import 'package:flutter_test/flutter_test.dart';
6+
import 'package:in_app_purchase_platform_interface/in_app_purchase_platform_interface.dart';
7+
8+
void main() {
9+
group('Constructor Tests', () {
10+
test(
11+
'fromSkProduct should correctly parse data from a SKProductWrapper instance.',
12+
() {
13+
final ProductDetails productDetails = ProductDetails(
14+
id: 'id',
15+
title: 'title',
16+
description: 'description',
17+
price: '13.37',
18+
currencyCode: 'USD',
19+
rawPrice: 13.37);
20+
21+
expect(productDetails.id, 'id');
22+
expect(productDetails.title, 'title');
23+
expect(productDetails.description, 'description');
24+
expect(productDetails.rawPrice, 13.37);
25+
expect(productDetails.currencyCode, 'USD');
26+
});
27+
});
28+
}

0 commit comments

Comments
 (0)