如何防止生产 flutter 应用程序在模拟器中运行?

Mar*_*cos 2 production-environment flutter

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

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

小智 5

您可以使用包https://pub.dev/packages/device_info

在 pubspec.yaml 中添加依赖项

dependencies:
  device_info: ^0.4.0+3
Run Code Online (Sandbox Code Playgroud)

这是如何检测它是否是真实设备的示例

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;
  }
}
Run Code Online (Sandbox Code Playgroud)

我没有安装 Genymotion,但在 AS 模拟器上它false按预期显示。