123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- import 'dart:ui';
- import 'package:flutter/material.dart';
- import 'package:flutter/widgets.dart';
- import 'package:photos/models/file.dart';
- import 'package:photos/ui/common/loading_widget.dart';
- import 'package:photos/utils/exif_util.dart';
- class ExifInfoDialog extends StatefulWidget {
- final File file;
- ExifInfoDialog(this.file, {Key key}) : super(key: key);
- @override
- _ExifInfoDialogState createState() => _ExifInfoDialogState();
- }
- class _ExifInfoDialogState extends State<ExifInfoDialog> {
- @override
- Widget build(BuildContext context) {
- final scrollController = ScrollController();
- return AlertDialog(
- title: Text(
- widget.file.title,
- style: Theme.of(context).textTheme.headline5,
- ),
- content: Scrollbar(
- controller: scrollController,
- isAlwaysShown: true,
- child: SingleChildScrollView(
- controller: scrollController,
- child: _getInfo(),
- ),
- ),
- actions: [
- TextButton(
- child: Text(
- "Close",
- style: Theme.of(context).textTheme.bodyText1,
- ),
- onPressed: () {
- Navigator.of(context, rootNavigator: true).pop('dialog');
- },
- ),
- ],
- );
- }
- Widget _getInfo() {
- return FutureBuilder(
- future: getExif(widget.file),
- builder: (BuildContext context, AsyncSnapshot snapshot) {
- if (snapshot.hasData) {
- final exif = snapshot.data;
- String data = "";
- for (String key in exif.keys) {
- data += "$key: ${exif[key]}\n";
- }
- if (data.isEmpty) {
- data = "no exif data found";
- }
- return Container(
- padding: EdgeInsets.all(2),
- color: Colors.white.withOpacity(0.05),
- child: Center(
- child: Padding(
- padding: const EdgeInsets.all(4),
- child: Text(
- data,
- style: TextStyle(
- fontSize: 14,
- fontFeatures: const [
- FontFeature.tabularFigures(),
- ],
- height: 1.4,
- color: Theme.of(context)
- .colorScheme
- .onSurface
- .withOpacity(0.7),
- ),
- ),
- ),
- ),
- );
- } else {
- return loadWidget;
- }
- },
- );
- }
- }
|