Инициализация покупок в приложении Flutter: метод _handlePurchaseUpdates не определен - PullRequest
0 голосов
/ 17 марта 2020

Я пытаюсь следовать вместе с документацией о покупке в приложении для Flutter. Я столкнулся с проблемой в самом начале, потому что пример кода, который мне дают для инициализации плагина, выдает ошибку

The method '_handlePurchaseUpdates' isn't defined for the class '_MyTabbedPageState'.
Try correcting the name to the name of an existing method, or defining a method named '_handlePurchaseUpdates'.

В моем приложении также есть страницы с вкладками, поэтому я попытался объединить класс _MyAppState из документация с моим классом _MyTabbedPageState. Ниже приведен пример моего кода. Я получаю сообщение об ошибке _handlePurchaseUpdates(purchases); и не знаю, что делать

class MyTabbedPage extends StatefulWidget {
  const MyTabbedPage({ Key key }) : super(key: key);
  @override
  _MyTabbedPageState createState() => _MyTabbedPageState();
}

class _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin {
  final List<Tab> myTabs = <Tab>[
    Tab(text: 'Weddell'),
    Tab(text: 'Harp'),
    Tab(text: 'Grey')
  ];

  //Iap iap = new Iap();
  TabController _tabController;
  StreamSubscription<List<PurchaseDetails>> _subscription;

  @override
  void initState() {
    super.initState();
  //  iap.initState();
    final Stream purchaseUpdates = InAppPurchaseConnection.instance.purchaseUpdatedStream;
    _subscription = purchaseUpdates.listen((purchases) {
      _handlePurchaseUpdates(purchases);
    });
    _tabController = TabController(vsync: this, length: myTabs.length);
  }

  @override
  void dispose() {
    _tabController.dispose();
    _subscription.cancel();
    //iap.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      bottomNavigationBar: BottomAppBar(
        child: TabBar(
          controller: _tabController,
          tabs: myTabs,
          labelColor: Color.fromRGBO(0, 0, 0, 1),
        ),
      ),
      body: TabBarView(
        controller: _tabController,
        children: [
          WeddellScreen(),
          HarpScreen(),
          GreyScreen()
        ]
      ),
    );
  }
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.

  @override
  Widget build(BuildContext context) {

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
      home: MyTabbedPage()
    );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...