45 lines
1.7 KiB
Dart
45 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:outbag_app/backend/room.dart';
|
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
|
|
import 'dart:math';
|
|
|
|
class RoomIconPicker extends StatelessWidget {
|
|
Function(RoomIcon)? onSelect;
|
|
RoomIconPicker({this.onSelect});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
double width = MediaQuery.of(context).size.width;
|
|
double height = MediaQuery.of(context).size.height;
|
|
double smallest = min(min(width, height), 400);
|
|
|
|
return AlertDialog(
|
|
title: Text(AppLocalizations.of(context)!.chooseRoomIcon),
|
|
actions: const [],
|
|
content: SizedBox(
|
|
width: smallest * 0.3 * 3,
|
|
height: smallest * 0.3 * 3,
|
|
child: GridView.count(
|
|
crossAxisCount: 3,
|
|
children: RoomIcon.list().map((icon) {
|
|
return GridTile(
|
|
child: IconButton(
|
|
icon: SvgPicture.asset(
|
|
icon.img,
|
|
width: smallest * 0.3,
|
|
height: smallest * 0.3,
|
|
),
|
|
// do not display tooltip for now
|
|
// as it is hard to translate
|
|
// and the tooltip prevented the click event,
|
|
// when clicked on the tooltip bar
|
|
// tooltip:icon.text,
|
|
onPressed: () {
|
|
if (onSelect != null) {
|
|
onSelect!(icon);
|
|
}
|
|
}));
|
|
}).toList())));
|
|
}
|
|
}
|