import 'package:flutter/material.dart'; import 'package:matrix_homeserver_recommendations/matrix_homeserver_recommendations.dart'; import 'package:url_launcher/url_launcher.dart'; class HomeserverBottomSheet extends StatelessWidget { final HomeserverBenchmarkResult homeserver; const HomeserverBottomSheet({required this.homeserver, Key? key}) : super(key: key); @override Widget build(BuildContext context) { final responseTime = homeserver.responseTime; final description = homeserver.homeserver.description; final rules = homeserver.homeserver.rules; final privacy = homeserver.homeserver.privacyPolicy; final registration = homeserver.homeserver.registration; final jurisdiction = homeserver.homeserver.jurisdiction; final homeserverSoftware = homeserver.homeserver.homeserverSoftware; return Scaffold( appBar: AppBar( title: Text(homeserver.homeserver.baseUrl.host), ), body: ListView(children: [ if (description != null && description.isNotEmpty) ListTile( leading: const Icon(Icons.info_outlined), title: Text(description), ), if (jurisdiction != null && jurisdiction.isNotEmpty) ListTile( leading: const Icon(Icons.location_city_outlined), title: Text(jurisdiction), ), if (homeserverSoftware != null && homeserverSoftware.isNotEmpty) ListTile( leading: const Icon(Icons.domain_outlined), title: Text(homeserverSoftware), ), ListTile( onTap: () => launch(homeserver.homeserver.baseUrl.toString()), leading: const Icon(Icons.link_outlined), title: Text(homeserver.homeserver.baseUrl.toString()), ), if (registration != null) ListTile( onTap: () => launch(registration.toString()), leading: const Icon(Icons.person_add_outlined), title: Text(registration.toString()), ), if (rules != null) ListTile( onTap: () => launch(rules.toString()), leading: const Icon(Icons.visibility_outlined), title: Text(rules.toString()), ), if (privacy != null) ListTile( onTap: () => launch(privacy.toString()), leading: const Icon(Icons.shield_outlined), title: Text(privacy.toString()), ), if (responseTime != null) ListTile( leading: const Icon(Icons.timer_outlined), title: Text('${responseTime.inMilliseconds}ms'), ), ]), ); } }