Files
nearby_service/example_full/lib/presentation/view/streaming_peers_view.dart
T
Ben Hagen abe519dae7 Add macOS support (#23)
* Add macOS support

* Update README

* Update to v0.2.0

* Document breaking changes

* Delete widget tests
2025-05-13 16:24:58 +02:00

69 lines
2.1 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:nearby_service/nearby_service.dart';
import 'package:nearby_service_example_full/domain/app_service.dart';
import 'package:nearby_service_example_full/uikit/uikit.dart';
import 'package:provider/provider.dart';
import '../components/device_preview.dart';
class StreamingPeersView extends StatelessWidget {
const StreamingPeersView({super.key});
@override
Widget build(BuildContext context) {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
ActionButton(
type: ActionType.warning,
onTap: context.read<AppService>().stopListeningPeers,
title: 'Stop stream peers',
),
const SizedBox(height: 10),
const _PeersBody(),
],
);
}
}
class _PeersBody extends StatelessWidget {
const _PeersBody();
@override
Widget build(BuildContext context) {
return Selector<AppService, bool>(
selector: (context, service) => service.isDarwinBrowser,
builder: (context, isDarwinBrowser, _) {
return Selector<AppService, List<NearbyDevice>?>(
selector: (context, service) => service.peers,
builder: (context, peers, _) {
return (peers != null && peers.isNotEmpty)
? Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
...peers.map(
(e) {
return Container(
padding: const EdgeInsets.only(bottom: 8.0),
child: DevicePreview(device: e),
);
},
),
],
)
: Text(
Platform.isAndroid || isDarwinBrowser
? 'No one here ('
: "Wait until someone invites you!",
textAlign: TextAlign.center,
);
},
);
},
);
}
}