相关疑难解决方法(0)

Flutter - flutter-web 中的条件库导入

假设audioplayers|lib/audio_cache.dart仅适用于 Android/iOS,我有条件地从 Dart 文件中排除以下导入:

import "package:audioplayers/audio_cache.dart"
Run Code Online (Sandbox Code Playgroud)

通过以下方式:

import "dart:math" if (dart.library.io) "package:audioplayers/audio_cache.dart";
Run Code Online (Sandbox Code Playgroud)

其中“dart:math”可以是任何 fake_stub Dart 文件。简而言之,这Flutter 中的移动设备导入了一个库。详细信息在这里(感谢阿洛伊斯·丹尼尔!)。

在 Flutter-Web 实现中隐藏特定于平台的代码的最佳方法是什么?

 import 'dart:io' show Platform;

 bool isMobile() => Platform.isAndroid || Platform.isIOS;

 class _MyPageState extends State<MyPage> {
     dynamic _audioPlayer;

     @override
     void initState() {
         if (isMobile()) {
            _audioPlayer = AudioCache(prefix: 'sounds/');
            _audioPlayer.load('mysound.mp3');
         }
     }
 }
Run Code Online (Sandbox Code Playgroud)

AudioCache当然,这种幼稚的尝试在参考上失败了。

 Error: Method not found: 'AudioCache'.
  _audioPlayer = AudioCache(prefix: 'sounds/');
Run Code Online (Sandbox Code Playgroud)

import dart flutter flutter-web

14
推荐指数
1
解决办法
6719
查看次数

Flutter Web 上传到 Firestore

我在使用 Flutter web 并将图像上传到 Firestore 时遇到问题。我很确定问题出在图像选择器中,因为普通(移动)图像选择器不适用于网络。普通图像选择器返回一个文件,但替代image_picker_web返回一个图像,该图像在上传时被拒绝,因为它需要一个Future<File>.

image_picker_web有一种替代方法可以返回Uint8List我使用过的 a,然后转换为Filevia dart:html- 并正常上传,但图像已损坏且无法查看。

这是我所做的:

按下按钮 - 选择图像Uint8List> 转换为Image,存储在内存中并在屏幕上显示

                  onPressed: () async {
                    //Upload Image as Uint8List
                    imageBytes = await ImagePickerWeb.getImage(asUint8List: true);
                    //Convert Uint8List to Image
                    _image = Image.memory(imageBytes);
                    //Show new image on screen
                    setBottomSheetState(() {
                      image = _image;
                    });
                  },
Run Code Online (Sandbox Code Playgroud)

转换Uint8ListFileusingdart:html File和 name as users UID.png (PNG Uploaded)

 imageFile = html.File(imageBytes, …
Run Code Online (Sandbox Code Playgroud)

firebase flutter google-cloud-firestore flutter-web

13
推荐指数
1
解决办法
2074
查看次数

在 flutter 中使用 Google 地图(适用于移动设备和网络)

我正在开发一个 flutter 应用程序,该应用程序应该有一个适用于网络和移动设备的通用代码库。

我的应用程序将有一个谷歌地图,据我所知,没有一个包可以满足所有平台。

google_maps_flutter - seems to work only for mobile (IOS / Android)
google_maps_flutter_web - seems to work only for web
Run Code Online (Sandbox Code Playgroud)

因此,很可能我必须使用这些单独的包创建两个单独的 MapWidget,一个用于网络,一个用于移动设备。

对于移动设备:

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

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

  @override
  State<MapSample> createState() => MapSampleState();
}

class MapSampleState extends State<MapSample> {
  final Completer<GoogleMapController> _controller = Completer();

  static const CameraPosition _kGooglePlex = CameraPosition(
    target: LatLng(37.42796133580664, -122.085749655962),
    zoom: 14.4746,
  );

  @override
  Widget build(BuildContext context) {
    return GoogleMap(
      mapType: MapType.hybrid,
      initialCameraPosition: …
Run Code Online (Sandbox Code Playgroud)

google-maps flutter flutter-web google-maps-flutter

7
推荐指数
2
解决办法
4579
查看次数

优雅地处理 Flutter Web 平台上仅限移动设备的插件

我注意到 Flutter Web(仍处于测试阶段)不支持 、 、 等Flutter插件path_provider。任何人都可以提供一些有关如何在他们支持的平台上使用此插件的见解,并防止他们在不支持的平台上破坏应用程序吗?firebase_messaginggoogle_fonts

  • 是否有任何标准或记录的方法可以在不受支持的平台上优雅地处理插件?
  • 在为不受支持的平台构建时,我可以从 pubspec 中排除插件吗?可能使用某种包装器?
  • 在构建 Web 时,某些 dart 插件附带的 Android 或 iOS 本机代码会发生什么情况?

flutter flutter-web

6
推荐指数
1
解决办法
1805
查看次数

如何分别为 Flutter web 和 mobile 添加包?

我正在创建一个面向 Android/iOS 和 Web 的 Flutter 项目,有什么方法可以分别为 Flutter Mobile 和 Web 添加支持的包。例如,我在 Flutter 移动应用程序中使用 dart:io 包来保存文件,但在 Flutter web 中不支持它,因此对于 web,我使用 dart:js 包下载 web 应用程序中的文件。

对于 C#,我们只是使用条件符号,但 Flutter 我找不到任何解决方案。

问题是我无法在 main.dart 文件中导入这两个包。谁能帮我实现这一目标

dart flutter flutter-web

5
推荐指数
2
解决办法
2760
查看次数

在 Flutter 项目中使用 Grpc Web

我希望有人可以帮助解决我目前正在创建一个适用于 Web 和移动设备的 Flutter 应用程序的问题,并且我想使用 GRPC 和 WebGrpc。使用 Grpc 一切都运行良好,但使用 Web Grpc 时出现错误

   if (kIsWeb) {
    print("flutter web");
    clientChannel =
        GrpcWebClientChannel.xhr(Uri.parse('http://192.168.2.146:8880'));
    AuthClient(clientChannel).authenticate(AuthenticationRequest()
      ..login = "Apfel"
      ..password= "Hello").then((res) => print(res)).catchError((err) => print(err));
  } else {
    print("flutter mobil");
    clientChannel = ClientChannel('192.168.2.146',
        port: 3009,
        options:
        ChannelOptions(credentials: ChannelCredentials.insecure()));
  }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误预期为“ClientChannel”类型的值,但得到了“GrpcWebClientChannel”类型之一

dart grpc flutter grpc-web grpc-dart

5
推荐指数
0
解决办法
1557
查看次数

我如何在 Flutter web 中使用套接字

我正在尝试在使用 Python 编写的套接字服务器socketio与使用 Flutter Web 制作的客户端之间建立连接。

我测试了各种套接字包,如adhara_socket_ioflutter_socket_io,但没有任何效果。我在 Android 上尝试了相同的代码片段,但它们也不起作用。

我一直在搜索,我找到了这个代码片段。它使用包中的Socketdart.io

Socket socket = await Socket.connect('192.168.2.190', 7003);

    print('connected');

    // listen to the received data event stream
    socket.listen((List<int> event) {
      print(utf8.decode(event));
    });

    // send hello
    socket.add(utf8.encode('hello'));

    // wait 5 seconds
    await Future.delayed(Duration(seconds: 5));

    // .. and close the socket
    socket.close();
Run Code Online (Sandbox Code Playgroud)

这个连接到 Python 服务器并从 Android 发送数据,但是当我从 Web 测试它时,我没有连接。

我需要添加一些额外的东西才能让它在 Web 上工作吗?

或者在最坏的情况下,有没有另一种方法可以做我想做的事情,我的目标是在网站中显示视频源。该视频实际上是一堆从 Python 中获取的图像,将对它们执行一些机器学习,我想通过套接字发送它们,并且每个图像在收到后立即显示,因此看起来像一个视频源。(类似的事情是用 React 完成的)

sockets flutter flutter-web

3
推荐指数
1
解决办法
2085
查看次数