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:photos/models/file.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;
|
||||
const InfoItemWidget({this.hintText = '', super.key});
|
||||
final File file;
|
||||
const InfoItemTextWidget({required this.file, this.hintText = '', super.key});
|
||||
|
||||
@override
|
||||
State<InfoItemWidget> createState() => _InfoItemWidgetState();
|
||||
State<InfoItemTextWidget> createState() => _InfoItemTextWidgetState();
|
||||
}
|
||||
|
||||
class _InfoItemWidgetState extends State<InfoItemWidget> {
|
||||
class _InfoItemTextWidgetState extends State<InfoItemTextWidget> {
|
||||
int maxLength = 280;
|
||||
int currentLength = 0;
|
||||
final _textController = TextEditingController();
|
||||
final _focusNode = FocusNode();
|
||||
String caption = "";
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
// save caption here
|
||||
_textController.dispose();
|
||||
super.dispose();
|
||||
}
|
||||
|
@ -28,7 +31,7 @@ class _InfoItemWidgetState extends State<InfoItemWidget> {
|
|||
final textTheme = getEnteTextTheme(context);
|
||||
return TextField(
|
||||
onEditingComplete: () {
|
||||
//save caption here
|
||||
editCaption();
|
||||
_focusNode.unfocus();
|
||||
},
|
||||
controller: _textController,
|
||||
|
@ -57,8 +60,15 @@ class _InfoItemWidgetState extends State<InfoItemWidget> {
|
|||
onChanged: (value) {
|
||||
setState(() {
|
||||
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/ui/components/divider_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/viewer/file/collections_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 =
|
||||
_exifData["resolution"] != null && _exifData["megaPixels"] != null;
|
||||
final listTiles = <Widget>[
|
||||
const Padding(
|
||||
padding: EdgeInsets.only(top: 8, bottom: 4),
|
||||
child: InfoItemWidget(),
|
||||
Padding(
|
||||
padding: const EdgeInsets.only(top: 8, bottom: 4),
|
||||
child: InfoItemTextWidget(file: widget.file),
|
||||
),
|
||||
ListTile(
|
||||
horizontalTitleGap: 2,
|
||||
|
|
Loading…
Reference in a new issue