Flutter应用商店商品详情展示插件flutter_store_listing的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter应用商店商品详情展示插件flutter_store_listing的使用

flutter_store_listing

flutter_store_listing 是一个用于在iOS App Store和Google Play商店中打开应用详情页面,并处理评价请求的Flutter插件。此外,在iOS上还可以通过 SKStoreReviewController 请求用户评价。

使用

详细API文档请参阅:

void main() {
  // 如果可用,显示评价请求对话框。
  // 在非iOS设备上无操作。
  FlutterStoreListing().launchRequestReview(onlyNative: true);

  // 使用URL Launcher打开Play Store或iTunes商店的应用详情页面。
  FlutterStoreListing().launchStoreListing();
}

示例代码

以下是一个完整的示例代码,展示了如何使用 flutter_store_listing 插件来请求用户评价和打开应用商店详情页面。

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter_store_listing/flutter_store_listing.dart';
import 'package:logging_appenders/logging_appenders.dart';

void main() {
  PrintAppender.setupLogging();
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _appId = 'unknown';
  bool _requestReviewSupported = false;
  final _fsl = FlutterStoreListing();

  [@override](/user/override)
  void initState() {
    super.initState();
    (() async {
      if (Platform.isIOS) {
        _appId = await _fsl.getIosAppId() ?? 'app id not found';
      } else if (Platform.isAndroid) {
        _appId = await _fsl.getAndroidPackageName();
      }
      _requestReviewSupported = await _fsl.isSupportedNativeRequestReview();
      if (mounted) {
        setState(() {});
      }
    })();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Align(
          alignment: const Alignment(0, -0.3),
          child: Column(
            mainAxisSize: MainAxisSize.min,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: <Widget>[
              Text(_appId),
              ElevatedButton(
                onPressed: () async {
                  await _fsl.launchStoreListing();
                },
                child: const Text('打开商店详情页'),
              ),
              if (_requestReviewSupported)
                ElevatedButton(
                  onPressed: () async {
                    await _fsl.launchRequestReview(onlyNative: true);
                  },
                  child: const Text('请求评价'),
                ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter应用商店商品详情展示插件flutter_store_listing的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter应用商店商品详情展示插件flutter_store_listing的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter应用中使用flutter_store_listing插件来展示应用商店商品详情的一个示例代码。这个插件可以帮助你从Google Play Store或Apple App Store获取应用的商品详情,并在你的应用中展示这些信息。

首先,确保你已经在pubspec.yaml文件中添加了flutter_store_listing依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_store_listing: ^x.y.z  # 请替换为最新版本号

然后,运行flutter pub get来安装依赖。

接下来,你可以在你的Flutter应用中使用该插件。以下是一个简单的示例,展示如何获取并显示应用详情:

import 'package:flutter/material.dart';
import 'package:flutter_store_listing/flutter_store_listing.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  StoreListing _storeListing = StoreListing();
  AppStoreInfo? _appInfo;

  @override
  void initState() {
    super.initState();
    _fetchAppInfo();
  }

  Future<void> _fetchAppInfo() async {
    try {
      // 对于Google Play Store,使用你的应用的包名
      // 对于Apple App Store,使用你的应用的bundle ID
      String appId = 'com.example.yourapp'; // 替换为你的应用ID

      AppStorePlatform platform = AppStorePlatform.googlePlay; // 或者 AppStorePlatform.appleAppStore

      _appInfo = await _storeListing.getAppInfo(appId, platform);
      setState(() {});
    } catch (e) {
      print('Error fetching app info: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Store Listing Info'),
        ),
        body: _appInfo != null
            ? Padding(
                padding: const EdgeInsets.all(16.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.start,
                  children: <Widget>[
                    Text('App Name: ${_appInfo!.appName}'),
                    SizedBox(height: 16),
                    Text('Developer: ${_appInfo!.developer}'),
                    SizedBox(height: 16),
                    Text('Price: ${_appInfo!.price}'),
                    SizedBox(height: 16),
                    Text('Rating: ${_appInfo!.rating}'),
                    SizedBox(height: 16),
                    Text('Num Ratings: ${_appInfo!.numRatings}'),
                    SizedBox(height: 16),
                    Text('Description: ${_appInfo!.description!}'),
                  ],
                ),
              )
            : Center(
                child: CircularProgressIndicator(),
              ),
      ),
    );
  }
}

在这个示例中,我们首先导入了必要的包,然后创建了一个Flutter应用。在_MyAppState类中,我们定义了一个_storeListing对象和一个_appInfo变量来存储获取的应用信息。

initState方法中,我们调用_fetchAppInfo方法来异步获取应用信息。这个方法接受两个参数:应用的ID(对于Google Play Store是包名,对于Apple App Store是bundle ID)和平台(AppStorePlatform.googlePlayAppStorePlatform.appleAppStore)。

获取到应用信息后,我们使用setState方法来更新UI。在build方法中,我们根据_appInfo是否为null来显示加载中的指示器或应用详情。

请注意,由于网络请求和API限制,实际使用时可能需要处理更多的错误情况和边界情况,比如网络错误、API限制等。此外,根据具体需求,你可能还需要添加用户权限请求(如访问网络权限)和处理不同平台的特定逻辑。

回到顶部