Flutter中未定义的名称“已安装”

erhoui1w  于 2023-02-13  发布在  Flutter
关注(0)|答案(1)|浏览(181)

我得到这个错误:未定义的名称"挂载"在未来的fetchoffers小工具。有人能帮助我解决这个问题吗?我想用这个在我的flutter应用中进行应用内购买。

import 'package:flutter/material.dart';
import 'package:AnyKnower/chatgpt.dart';
import 'package:AnyKnower/privacypolicy.dart';
import 'package:AnyKnower/purchase_api.dart';
import 'package:AnyKnower/utils.dart';
import 'package:glassfy_flutter/models.dart';
import 'package:provider/provider.dart';
import 'chat_screen.dart';
import 'package:page_transition/page_transition.dart';
import 'glassfy_provider.dart';
class NavBar extends StatelessWidget {
  bool isSubscribed = false;


  @override
  Widget build(BuildContext context) {
    return Drawer(

        child: ListView(
          padding: EdgeInsets.zero,
          children: [
            ClipRRect(
              borderRadius: BorderRadius.only(
                topRight: Radius.circular(15),
              ),
              child: UserAccountsDrawerHeader(
                accountName: Text('AnyKnower'),
                accountEmail: Text(''),
                currentAccountPicture: CircleAvatar(
                  child: ClipOval(
                    child: Image.asset('assets/logo4.jpg', width: 100, height: 100, fit: BoxFit.cover),
                  ),
                ),
                decoration: BoxDecoration(
                  image: DecorationImage(

                    image: AssetImage("assets/background1.jpg"),
                    fit: BoxFit.cover,
                  ),
                ),
              ),
            ),
            ListTile(
              leading: Icon(Icons.chat_rounded,color: Colors.blueGrey,),
              title: Text("AnyKnower Chat"),
              onTap: () {
                Navigator.of(context).push(PageTransition(child: ChatScreen(), type: PageTransitionType.fade));

              }
            ),
            ListTile(
                leading: Icon(Icons.shopping_cart_outlined,color: Colors.blueGrey,),
                title: Text("The AnyKnower Shop"),
                onTap: () {
                  fetchOffers(context);

                }
            ),
            ListTile(
                leading: Icon(Icons.chat_outlined,color: Colors.blueGrey,),
                title: Text("Beta Premium chat"),
                onTap: () {
                  Navigator.of(context).push(PageTransition(child: chatgpt(), type: PageTransitionType.fade));

                }
            ),
            ListTile(
                leading: Icon(Icons.privacy_tip_outlined,color: Colors.blueGrey,),
                title: Text("Privacy Policy"),
                onTap: () {
                  Navigator.of(context).push(PageTransition(child: privacypolicy(), type: PageTransitionType.fade));

                }
            ),
          ],
        )

    );

  }

 Future fetchOffers(BuildContext context) async {
    final offerings = await PurchaseApi.fetchOffers();
    final offer = offerings.singleWhere((offering) => offering.offeringId == '100AnyKnowerCredit');
   if(!mounted) return;
   Utils.showSheet(
     context,
       (context) => PayWallWidget(
         title: 'Upgrade your plan',
           description: 'kkdkdd',
         offer: offer,
         onClickedSku: (sku) async {
           final transaction = await PurchaseApi.purchaseSku(sku);
           if (mounted!) return;
           if (transaction != null) {
             final provider = context.read<GlassfyProvider>();
             provider.add10Coins();
           }
           Navigator.pop(context);
         },
       )
   );

    }

    }

我可能需要导入一些东西吗?我在另一个帖子中看到它需要是一个statefullwidget,但是我需要做什么改变才能实现呢?

46scxncf

46scxncf1#

感谢Yeasin Sheikh提供了正确的解决方案。
我的解决方案是使用if (!context.mounted) return;而不是if(!mounted) return;

相关问题