本文主要介绍

upgrade

upgrader是一个超级包,用于提醒用户应用程序的更新可用。

创建起来有点麻烦,但绝对是即使是对 Flutter 有一定了解的初学者也能做到的。该包有几个优点。一旦它可以在 MaterialDesign 以及 Cupertionostyle 中显示警报,还可以设置不同的语言。

image-20211005192035821

在应用程序审查

虽然我们讨论的是小弹出窗口,但我们不妨继续讨论。应用评论对于应用非常重要,因为它们反映了用户对它的看法以及作为应用开发者您可以改进的地方。

这就是为什么有一个很棒的插件叫做in_app_review。有了这个包,用户可以在应用的某个点给一个评分,这个评分也会在不离开应用的情况下发布到 App & Google Play 商店。

image-20211005192016712

Flutter funding_choic

好的,这是今天的最后一个弹窗,我保证:)

在欧洲,必须在应用程序中询问是否允许收集数据以改善服务等。为此有包flutter_funding_choices。这是资金选择的非官方 Flutter 实现,这是一项谷歌服务,允许请求用户同意 AdMob 中的个性化广告。

image-20211005192437846

应用内通知

WhatsApp、Signal 等通知。非常方便,我已经在另外 10 篇 Flutter 技巧文章中展示了它适用于哪个包。如果您想在应用程序内有独立操作系统的小通知,那么您可以使用in_app_notification包。它非常易于使用,您可以显示这些小卡片,例如,如果登录过程中出现问题。说到登录,对用户使用强密码不是有一个很好的解决方案吗?

image-20211005192457658

InAppNotification.show(
  child: NotificationBody(count: _count),
  context: context,
  onTap: () => print('Notification tapped!'),
);

Flutter 密码验证器

回答上一个提示中的问题:是的,它存在。flutter_pw_validator是一个非常不错的包,可以确保用户满足一个好的密码要求。这也很容易使用,绝对应该看看。

image-20211005192528930

dTextField(
    controller: _passwordController,
),
FlutterPwValidator(
    controller: _passwordController,
    minLength: 6,
    uppercaseCharCount: 2,
    numericCharCount: 3,
    specialCharCount: 1,
    width: 400,
    height: 150,
    onSuccess: yourCallbackFunction,
)

webview_flutter

不使用浏览器或其他东西的情况下在应用程序中查看网站?好吧,你可以很容易地做到这一点,使用webview_flutter。就像这里介绍的每个包一样,超级易于使用,只需要一行代码:

return WebView(initialUrl: 'https://tomicriedel.medium.com');

是的,就是这样,现在您的 webview 已经可以工作了。当然,如果您打算创建一个浏览器,您可以将整个内容链接到一个变量:

String tomicRiedel = '<https://tomicriedel.medium.com>';

return WebView(initialUrl: tomicRiedel);

Flag

标志可用于许多不同的领域。例如,如果您希望用户选择他的来源,或者您希望使用标志使国家/地区代码更具描述性。包标志为您提供了世界上所有的标志,以便在您的应用程序中使用它们:

Flag.fromCode(FlagsCode.COUNTRY_CODE, height: HEIGHT, width: WIDTH),
//OR
Flag.fromString(COUNTRY_CODE, height: HEIGHT, width: WIDTH),

局域网扫描仪

每个人都知道这个弹出窗口询问应用程序是否允许该应用程序发现本地网络中的网络设备。您的应用程序中也需要这个吗?那么lan_scanner包正是您所需要的。这一次它可能不是用一行代码编写的,但我会告诉你如何:

inal port = 80;
final subnet = "192.168.0";
final timeout = Duration(seconds: 5);
final scanner = LanScanner();
final stream = scanner.preciseScan(
  subnet,
  timeout: timeout,
  progressCallback: (ProgressModel progress) {
    print('${progress.percent * 100}% 192.168.0.${progress.currIP}');
  },
);
stream.listen((DeviceModel device) {
  if (device.exists) {
    print("Found device on ${device.ip}:${device.port}");
  }
});

但您可能不知道您的子网是什么。那么你仍然应该使用包network_info_plus然后调用 ipToSubnet() 函数:

var wifiIP = await (NetworkInfo().getWifiIP())
var subnet = ipToSubnet(wifiIP);

视频修剪器

每个人都知道。当您想在应用程序中修剪视频时。如果您希望它在您的应用程序中工作,您应该使用包video_trimmer。它可以修剪视频,然后观看并将其保存在文件中。这个包的另一个非常酷的功能是它甚至支持 .gif 文件。

image-20211005192610280

由于加载视频等需要一定的权限,所以这里就不解释怎么设置了,但是包的README很详细,很容易理解。

flame

正如一开始所承诺的那样,我将向您展示Flutter的游戏引擎。而这个叫做火焰。该引擎仍处于测试阶段,但正在不断开发中,并且已经有很多人在制作。Robert Brunhage在一个视频中制作了一个非常简单的游戏,但这实际上只是一个简单的例子,我相信你可以用它制作真正的热门游戏 ;)