본문 바로가기
개발/Flutter

In App 결제 기능 구축(5)

by dev_caleb 2023. 6. 7.
728x90

일단 UI를 대충 짜보았다.

 

다른 앱의 UI를 벤치마킹 했다!

 

 

 

 

일단 오른쪽 위에 있는 Text는 Obx로 User정보 가져와서 바꿔준다

-> User정보는 stream으로 계속 바뀌도록 되어있다

 

아래에 있는 구매 버튼은 market에서 product를 가져온 후에 FutureBuilder로 실행시켜줄 예정이다.

 

Future loadingProductForSale() async {
  const Set<String> _kIds = <String>{'dia_1', 'dia_2'};
  final ProductDetailsResponse response = await InAppPurchase.instance.queryProductDetails(_kIds);
  logger.d('response : $response');
  List<ProductDetails> products = response.productDetails;
  for (var e in products) {
    logger.d(e.toDetailString());
  }
  if (response.notFoundIDs.isNotEmpty) {
    // Handle the error.
    logger.d('response.notFoundIDs.isNotEmpty ${response.notFoundIDs}');
  }
}

toString 을 보기 좋게 바꿔놓는다. 

extension ToolsWithDateTime on ProductDetails {
  String toDetailString() {
    return 'detail product -> id : $id,\ntitle :$title  \n description: $description, \n price:  $price,'
        '\n rawPrice: $rawPrice,  \n currencyCode: $currencyCode';
  }
}

 

그런 뒤에 loadingProductForSale()을 FutureBuilder에 넣어준다. 

 

body: FutureBuilder(
  future: loadingProductForSale(),
  builder: (BuildContext context, AsyncSnapshot<List<ProductDetails>> snapshot) {
    if (snapshot.data == null) {
      return Center(
        child: CircularProgressIndicator(),
      );
    }
    List<ProductDetails> productList = snapshot.data!;
    return ListView(
728x90

'개발 > Flutter' 카테고리의 다른 글

FractionallySizedBox  (0) 2023.06.17
GetX 관련 자료  (0) 2023.06.14
In App 결제 기능 구축(4)  (0) 2023.06.05
Get.until로 bottom NavigationBar 종료하기  (0) 2023.06.05
In App 결제 기능 구축(3)  (0) 2023.06.04