aves/lib/widgets/collection/thumbnail/theme.dart

46 lines
1.2 KiB
Dart

import 'dart:math';
import 'package:aves/model/settings/settings.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
class ThumbnailTheme extends StatelessWidget {
final double extent;
final Widget child;
const ThumbnailTheme({
@required this.extent,
@required this.child,
});
@override
Widget build(BuildContext context) {
return ProxyProvider<Settings, ThumbnailThemeData>(
update: (_, settings, __) {
final iconSize = min(28.0, (extent / 4)).roundToDouble();
final fontSize = (iconSize / 2).floorToDouble();
return ThumbnailThemeData(
iconSize: iconSize,
fontSize: fontSize,
showLocation: settings.showThumbnailLocation,
showRaw: settings.showThumbnailRaw,
showVideoDuration: settings.showThumbnailVideoDuration,
);
},
child: child,
);
}
}
class ThumbnailThemeData {
final double iconSize, fontSize;
final bool showLocation, showRaw, showVideoDuration;
const ThumbnailThemeData({
@required this.iconSize,
@required this.fontSize,
@required this.showLocation,
@required this.showRaw,
@required this.showVideoDuration,
});
}