change caption on submit ('done' on keyboard)
This commit is contained in:
parent
2bea592925
commit
358efb20b8
|
@ -1,23 +1,26 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:photos/models/file.dart';
|
||||||
import 'package:photos/theme/ente_theme.dart';
|
import 'package:photos/theme/ente_theme.dart';
|
||||||
|
import 'package:photos/utils/magic_util.dart';
|
||||||
|
|
||||||
class InfoItemWidget extends StatefulWidget {
|
class InfoItemTextWidget extends StatefulWidget {
|
||||||
final String hintText;
|
final String hintText;
|
||||||
const InfoItemWidget({this.hintText = '', super.key});
|
final File file;
|
||||||
|
const InfoItemTextWidget({required this.file, this.hintText = '', super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<InfoItemWidget> createState() => _InfoItemWidgetState();
|
State<InfoItemTextWidget> createState() => _InfoItemTextWidgetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _InfoItemWidgetState extends State<InfoItemWidget> {
|
class _InfoItemTextWidgetState extends State<InfoItemTextWidget> {
|
||||||
int maxLength = 280;
|
int maxLength = 280;
|
||||||
int currentLength = 0;
|
int currentLength = 0;
|
||||||
final _textController = TextEditingController();
|
final _textController = TextEditingController();
|
||||||
final _focusNode = FocusNode();
|
final _focusNode = FocusNode();
|
||||||
|
String caption = "";
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
// save caption here
|
|
||||||
_textController.dispose();
|
_textController.dispose();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
@ -28,7 +31,7 @@ class _InfoItemWidgetState extends State<InfoItemWidget> {
|
||||||
final textTheme = getEnteTextTheme(context);
|
final textTheme = getEnteTextTheme(context);
|
||||||
return TextField(
|
return TextField(
|
||||||
onEditingComplete: () {
|
onEditingComplete: () {
|
||||||
//save caption here
|
editCaption();
|
||||||
_focusNode.unfocus();
|
_focusNode.unfocus();
|
||||||
},
|
},
|
||||||
controller: _textController,
|
controller: _textController,
|
||||||
|
@ -57,8 +60,15 @@ class _InfoItemWidgetState extends State<InfoItemWidget> {
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
setState(() {
|
setState(() {
|
||||||
currentLength = value.length;
|
currentLength = value.length;
|
||||||
|
caption = value;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void editCaption() {
|
||||||
|
if (caption.isNotEmpty) {
|
||||||
|
editFileCaption(context, widget.file, caption);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -11,7 +11,7 @@ import "package:photos/models/file.dart";
|
||||||
import "package:photos/models/file_type.dart";
|
import "package:photos/models/file_type.dart";
|
||||||
import 'package:photos/ui/components/divider_widget.dart';
|
import 'package:photos/ui/components/divider_widget.dart';
|
||||||
import 'package:photos/ui/components/icon_button_widget.dart';
|
import 'package:photos/ui/components/icon_button_widget.dart';
|
||||||
import 'package:photos/ui/components/info_item_widget.dart';
|
import 'package:photos/ui/components/info_item_text_widget.dart';
|
||||||
import 'package:photos/ui/components/title_bar_widget.dart';
|
import 'package:photos/ui/components/title_bar_widget.dart';
|
||||||
import 'package:photos/ui/viewer/file/collections_list_of_file_widget.dart';
|
import 'package:photos/ui/viewer/file/collections_list_of_file_widget.dart';
|
||||||
import 'package:photos/ui/viewer/file/device_folders_list_of_file_widget.dart';
|
import 'package:photos/ui/viewer/file/device_folders_list_of_file_widget.dart';
|
||||||
|
@ -93,9 +93,9 @@ class _FileInfoWidgetState extends State<FileInfoWidget> {
|
||||||
final bool showDimension =
|
final bool showDimension =
|
||||||
_exifData["resolution"] != null && _exifData["megaPixels"] != null;
|
_exifData["resolution"] != null && _exifData["megaPixels"] != null;
|
||||||
final listTiles = <Widget>[
|
final listTiles = <Widget>[
|
||||||
const Padding(
|
Padding(
|
||||||
padding: EdgeInsets.only(top: 8, bottom: 4),
|
padding: const EdgeInsets.only(top: 8, bottom: 4),
|
||||||
child: InfoItemWidget(),
|
child: InfoItemTextWidget(file: widget.file),
|
||||||
),
|
),
|
||||||
ListTile(
|
ListTile(
|
||||||
horizontalTitleGap: 2,
|
horizontalTitleGap: 2,
|
||||||
|
|
Loading…
Reference in a new issue