Flutter对话框插件dialog_pp_flutter的使用

Flutter对话框插件dialog_pp_flutter的使用

在本示例中,我们将展示如何在Flutter应用中使用dialog_pp_flutter插件来创建和管理不同的对话框。该插件提供了多种对话框类型,包括更新对话框、奖励对话框、退出对话框等。

添加到 void main

await PPDialog.newVersionCode();

这段代码用于初始化插件并检查是否有新版本的应用。

获取版本信息详情

print(AppDetailsPP.to.appName.value);
print(AppDetailsPP.to.packageName.value);
print(AppDetailsPP.to.versionApp.value);
print(AppDetailsPP.to.buildNumber.value); 

这段代码用于获取当前应用的名称、包名、版本号和构建号。

更新对话框

自定义更新对话框

PPDialog.updateDialog(context,
isUpdateRequired: true,
adSettingAppVersionCode: 4,
isPopup: true,
apiVersionCode: 8,
appLogoApi: "",
appNameApi: "",
subtitleAppApi: "",
appWebsiteUrl: ""
);

此代码段展示了如何创建一个自定义的更新对话框。如果设置了isUpdateRequiredtrue,则用户必须更新应用才能继续使用。

自动更新对话框

PPDialog.autoUpdate();

这段代码用于自动检查并显示更新对话框。

抽屉菜单

抽屉API调用

await advertisementDrawerApi("enter more live url drawer api");

这段代码用于从API加载更多应用信息。

抽屉UI

PPDialog.drawerScreen(appLogo: "",
privacyPolicy:"",
feedbackEmailId: "",
emailSubject: "",
emailMessage:""
)

此代码段展示了如何创建一个带有隐私政策、反馈邮箱等信息的抽屉菜单。

评分对话框

自动评分对话框

PPDialog.autoRate();

这段代码用于自动显示评分对话框。

自定义评分对话框

PPDialog.rateDialogCustom(context,logoApp: "");

此代码段展示了如何创建一个带有自定义应用图标(logoApp)的评分对话框。

奖励对话框

PPDialog.rewardDialog(
  rewardMessage: "Watch Reward ads for get IPTV list free",
  onTap: () {},
);

此代码段展示了如何创建一个奖励对话框,当用户观看广告时可以获得免费的IPTV列表。

退出对话框

PPDialog.exitDialog(
  mediumNative: Container(
  alignment: Alignment.center,
  height: 170.h,
  color: Colors.green[200],
  child: Text("Medium Size Native Ad"),
),
  appLogo: ''
);

此代码段展示了如何创建一个包含中型原生广告的退出对话框。

条款与条件对话框

PPDialog.termsConditions(context,
  privacyPolicyUrl: "",
  termsConditionUrl: "",
  isPrivacyPolicy: 
);

此代码段展示了如何创建一个包含隐私政策和条款与条件的对话框。

OneSignal通知

PPDialog.oneSignalNotification(oneSignalId: "");

此代码段展示了如何创建一个OneSignal通知对话框。

应用内购买

PPDialog.inAppPurchase(
  onError:, 
  onComplete: ,
  productId: "");

此代码段展示了如何创建一个应用内购买对话框。

网络连接对话框

PPDialog.internetDialogCheck(callback: );

此代码段展示了如何创建一个网络连接检查对话框。

完整示例代码

以下是一个完整的示例代码,展示了如何在应用中使用这些对话框:

import 'dart:async';

import 'package:dialog_pp_flutter/api_call.dart';
import 'package:dialog_pp_flutter/dialog_pp_flutter.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:http/http.dart' as http;
import 'dart:convert';

Future<void> main() async {
  await PPDialog.newVersionCode();
  await await advertisementDrawerApi("");
  await fetchAlbum();
  runApp(ScreenUtilInit(
      builder: (context, child) => const GetMaterialApp(
            home: MYYYYY(),
          )));
}

class MYYYYY extends StatefulWidget {
  const MYYYYY({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MYYYYY> createState() => _MYYYYYState();
}

class _MYYYYYState extends State<MYYYYY> {
  ondansd() async {
    await advertisementDrawerApi("");
    Future.delayed(const Duration(seconds: 3), () {
      Get.to(const MyApp());
    });
  }

  [@override](/user/override)
  void initState() {
    // TODO: implement initState
    super.initState();
    ondansd();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text("asd6as56d456as4d56as4d56as4d56as4d56as4d56as4d")),
    );
  }
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

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

class _MyAppState extends State<MyApp> {
  checkVersion() async {}

  onCompletetete() {
    print("done done");
  }

  ondansd() {
    print("connection done done go go  gogogogogo");
  }

  [@override](/user/override)
  void initState() {
    // TODO: implement initState
    super.initState();
    PPDialog.termsConditions(context,
        privacyPolicyUrl:
            "https://pages.flycricket.io/ipl-live-2022/terms.html",
        termsConditionUrl:
            "https://pages.flycricket.io/ipl-live-2022/terms.html",
        isPrivacyPolicy: true);
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return WillPopScope(
      onWillPop: () {
        return Future.value(false);
      },
      child: Scaffold(
        drawer: PPDialog.drawerScreen(
            appLogo: "logo",
            privacyPolicy: "privacyPolicy",
            feedbackEmailId: "feedbackEmailId",
            emailSubject: "emailSubject",
            emailMessage: "emailMessage", apiAppVersionCode: 50),
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: Center(
          child: InkWell(
              onTap: () {
                PPDialog.rateDialogCustom(context, logoApp: "logoApp");
                PPDialog.updateDialog(context,
                    isUpdateRequired: true,
                    isPopup: true,
                    apiVersionCode: 8,
                    adSettingAppVersionCode: 4,
                    shuffle: true,
                    clickCount: 3);
                PPDialog.rewardDialog(rewardMessage: "kkkkkkkksdfsdfhgadhjsfkadshfjkhjsdgfgsdhjfghjgsdfhjgdsj", onTap: () {},);
              },
              child: const Text('dsfdsfdsfn\ndsfdsf\ndfsgdsfds\ndfdsfdsfdsfds')),
        ),
      ),
    );
  }
}

Settings? modelApi;

Future<Settings?> fetchAlbum() async {
  final response = await http.get(Uri.parse(
      "https://gitlab.com/ks.bitcoding/test_random-appupdate-list/-/raw/main/test.json"));
  if (response.statusCode == 200) {
    return modelApi = Settings.fromJson(jsonDecode(response.body));
  } else {
    throw Exception('Failed to load album');
  }
}

Settings settingsFromJson(String str) => Settings.fromJson(json.decode(str));

String settingsToJson(Settings data) => json.encode(data.toJson());

class Settings {
  Settings({
    required this.comBitlinksBrazilIptvM3Ulist,
  });

  ComBitlinksBrazilIptvM3Ulist comBitlinksBrazilIptvM3Ulist;

  factory Settings.fromJson(Map<String, dynamic> json) => Settings(
        comBitlinksBrazilIptvM3Ulist: ComBitlinksBrazilIptvM3Ulist.fromJson(
            json["com.bitlinks.brazil.iptv.m3ulist"]),
      );

  Map<String, dynamic> toJson() => {
        "com.bitlinks.brazil.iptv.m3ulist":
            comBitlinksBrazilIptvM3Ulist.toJson(),
      };
}

// 其他类的定义省略

更多关于Flutter对话框插件dialog_pp_flutter的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter对话框插件dialog_pp_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用dialog_pp_flutter插件来创建对话框的示例。dialog_pp_flutter是一个用于显示各种对话框的Flutter插件,支持自定义样式和功能。

首先,你需要在你的pubspec.yaml文件中添加dialog_pp_flutter依赖:

dependencies:
  flutter:
    sdk: flutter
  dialog_pp_flutter: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,你可以在你的Dart文件中使用DialogPP类来显示对话框。以下是一个简单的示例,展示了如何显示一个包含标题、消息和按钮的对话框:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'DialogPP Flutter Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  void _showDialog() {
    DialogPP.showDialog(
      context: context,
      config: DialogPPConfig(
        title: "提示",
        message: "这是一个提示对话框!",
        positiveButton: DialogPPButton(
          text: "确定",
          onPressed: () {
            Navigator.pop(context);
          },
        ),
        negativeButton: DialogPPButton(
          text: "取消",
          onPressed: () {
            Navigator.pop(context);
          },
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("DialogPP Flutter Example"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showDialog,
          child: Text("显示对话框"),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,包含一个按钮。当点击按钮时,会调用_showDialog方法来显示一个对话框。

  • DialogPP.showDialog方法用于显示对话框。
  • DialogPPConfig类用于配置对话框的参数,包括标题、消息、正面按钮和负面按钮。
  • DialogPPButton类用于配置按钮的文本和点击事件。

你可以根据需要自定义对话框的样式和功能,例如更改按钮颜色、字体大小、添加更多按钮等。dialog_pp_flutter插件提供了丰富的配置选项,以满足不同的需求。

请确保你已经安装了最新版本的dialog_pp_flutter插件,并查阅其官方文档以获取更多详细信息和高级用法。

回到顶部