假设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) 我在使用 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)
转换Uint8List为Fileusingdart:html File和 name as users UID.png (PNG Uploaded)
imageFile = html.File(imageBytes, …Run Code Online (Sandbox Code Playgroud) 我正在开发一个 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) 我注意到 Flutter Web(仍处于测试阶段)不支持 、 、 等Flutter插件path_provider。任何人都可以提供一些有关如何在他们支持的平台上使用此插件的见解,并防止他们在不支持的平台上破坏应用程序吗?firebase_messaginggoogle_fonts
我正在创建一个面向 Android/iOS 和 Web 的 Flutter 项目,有什么方法可以分别为 Flutter Mobile 和 Web 添加支持的包。例如,我在 Flutter 移动应用程序中使用 dart:io 包来保存文件,但在 Flutter web 中不支持它,因此对于 web,我使用 dart:js 包下载 web 应用程序中的文件。
对于 C#,我们只是使用条件符号,但 Flutter 我找不到任何解决方案。
问题是我无法在 main.dart 文件中导入这两个包。谁能帮我实现这一目标
我希望有人可以帮助解决我目前正在创建一个适用于 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”类型之一
我正在尝试在使用 Python 编写的套接字服务器socketio与使用 Flutter Web 制作的客户端之间建立连接。
我测试了各种套接字包,如adhara_socket_io和flutter_socket_io,但没有任何效果。我在 Android 上尝试了相同的代码片段,但它们也不起作用。
我一直在搜索,我找到了这个代码片段。它使用包中的Socket类dart.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 完成的)
flutter ×7
flutter-web ×6
dart ×3
firebase ×1
google-maps ×1
grpc ×1
grpc-dart ×1
grpc-web ×1
import ×1
sockets ×1