我应该如何在我的应用程序的 Flutter 移动版和网页版之间做出一些区别?

Posted

技术标签:

【中文标题】我应该如何在我的应用程序的 Flutter 移动版和网页版之间做出一些区别?【英文标题】:How should I make some differences between Flutter mobile and web version of my app? 【发布时间】:2022-01-23 08:18:51 【问题描述】:

如果我想为我的应用程序使用一个代码库,但为移动应用程序添加一些特定的小部件/功能,并为我的应用程序的 Web 版本添加一些特定的小部件/功能,我应该怎么做?我是否应该编写所有代码并在这些特定小部件之前添加 if 语句以查看用户在哪个平台上运行应用程序并显示/隐藏该小部件/功能,或者我必须将移动和 Web 小部件分隔在不同的文件中?

例如,我想在移动版上展示相机功能,在网页版上展示另一个功能。我该怎么做?

【问题讨论】:

【参考方案1】:

您可以查看设备的平台,然后显示或不显示您的内容。

你可以通过几种方式做到这一点,最简单的一种是:

import 'dart:io' show Platform;

    if (Platform.isandroid) 
      // Android-specific code
     else if (Platform.isios) 
      // iOS-specific code
    

选项有:

Platform.isAndroid
Platform.isFuchsia
Platform.isIOS
Platform.isLinux
Platform.isMacOS
Platform.isWindows

网页专用:

import 'package:flutter/foundation.dart' show kIsWeb;

if (kIsWeb) 
  // web
 else 
  // not web

或者您也可以使用MediaQuery 计算屏幕尺寸。

要显示或不显示您可以使用小部件可见性的功能

https://api.flutter.dev/flutter/widgets/Visibility-class.html

【讨论】:

【参考方案2】:

您可以像这样检查您的应用是否在网络上运行

import 'package:flutter/foundation.dart' show kIsWeb;

if (kIsWeb) 
  // It's running on the web!
 else 
  // NOT running on the web!
  // You can also check for additional platforms here.
  // Or you only develop for web and mobile this is mobile

阅读此链接的文档以获得更多理解:https://api.flutter.dev/flutter/foundation/kIsWeb-constant.html

【讨论】:

以上是关于我应该如何在我的应用程序的 Flutter 移动版和网页版之间做出一些区别?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:在浏览器中运行网页版时如何停止显示移动应用

在 Flutter Web 和移动应用中使用 Firebase

Dart 包版本如何工作以及我应该如何对我的 Flutter 插件进行版本控制?

如何从 IDE 在移动 chrome 上运行 Flutter Web

如何在移动应用中更改颤振应用中的名称

如何在微服务设计中打破产品和用户和订单表