Flutter 如何防止产品颤振应用程序在模拟器中运行?

Flutter 如何防止产品颤振应用程序在模拟器中运行?,flutter,production-environment,Flutter,Production Environment,我不知道如何阻止或阻止我的生产应用程序在模拟器或软件(如Bluestack)上运行 有人能想出解决这个问题的办法吗?您可以使用这个软件包 在pubspec.yaml中添加依赖项 dependencies: device_info: ^0.4.0+3 下面是一个如何检测它是否是真实设备的示例 import 'package:device_info/device_info.dart'; import 'package:flutter/material.dart'; void main() =

我不知道如何阻止或阻止我的生产应用程序在模拟器或软件(如Bluestack)上运行

有人能想出解决这个问题的办法吗?

您可以使用这个软件包

在pubspec.yaml中添加依赖项

dependencies:
  device_info: ^0.4.0+3
下面是一个如何检测它是否是真实设备的示例

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(title: const Text('Is am i in matrix?')),
        body: Test(),
      ),
    );
  }
}

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _isRealDevice(),
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Center(child: Text('is it real device: ${snapshot.data}'));
        } else {
          return const SizedBox.shrink();
        }
      },
    );
  }

  Future<bool> _isRealDevice() async {
    AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
    return androidInfo.isPhysicalDevice;
  }
}
我没有安装Genymotion,但在作为模拟器的主机上,它按预期显示为false。

您可以使用该软件包

在pubspec.yaml中添加依赖项

dependencies:
  device_info: ^0.4.0+3
下面是一个如何检测它是否是真实设备的示例

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

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(title: const Text('Is am i in matrix?')),
        body: Test(),
      ),
    );
  }
}

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: _isRealDevice(),
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Center(child: Text('is it real device: ${snapshot.data}'));
        } else {
          return const SizedBox.shrink();
        }
      },
    );
  }

  Future<bool> _isRealDevice() async {
    AndroidDeviceInfo androidInfo = await DeviceInfoPlugin().androidInfo;
    return androidInfo.isPhysicalDevice;
  }
}

我没有安装Genymotion,但在作为仿真器的情况下,它会按预期显示false。

您需要一些仿真器或虚拟机无法可靠复制的内容,下面列出了类似的内容。硬件的速度是唯一让人想到的东西,但它会给你的移动应用程序带来大量的误报。@Marcos如果你看看Flitter团队是如何在这里检查的,你会发现其实没有一个全面的解决方案。它将捕获已知的仿真器。从技术上讲,你可以创建一个具有不同产品名称的新产品,并且你的应用程序可以在其上运行。你需要的东西是模拟器或虚拟机无法可靠复制的,类似的东西有一个非常简短的列表。硬件的速度是唯一让人想到的东西,但它会给你的移动应用程序带来大量的误报。@Marcos如果你看看Flitter团队是如何在这里检查的,你会发现其实没有一个全面的解决方案。它将捕获已知的仿真器。从技术上讲,您可以创建一个具有不同产品名称的新产品,并且您的应用程序将在其上运行。谢谢,这是目前最有用的答案谢谢,这是目前最有用的答案