fix #369
Some checks are pending
Flutter analyze & test / flutter_analyze_and_test (push) Waiting to run

This commit is contained in:
otsmr 2026-01-14 22:55:01 +01:00
parent e9c5d49938
commit 70fbf6abbb
7 changed files with 124 additions and 36 deletions

View file

@ -2919,6 +2919,12 @@ abstract class AppLocalizations {
/// In en, this message translates to:
/// **'Select users ({used}/{limit})'**
String additionalUserSelectButton(Object limit, Object used);
/// No description provided for @storeAsDefault.
///
/// In en, this message translates to:
/// **'Store as default'**
String get storeAsDefault;
}
class _AppLocalizationsDelegate

View file

@ -1624,4 +1624,7 @@ class AppLocalizationsDe extends AppLocalizations {
String additionalUserSelectButton(Object limit, Object used) {
return 'Benutzer auswählen ($used/$limit)';
}
@override
String get storeAsDefault => 'Als Standard speichern';
}

View file

@ -1612,4 +1612,7 @@ class AppLocalizationsEn extends AppLocalizations {
String additionalUserSelectButton(Object limit, Object used) {
return 'Select users ($used/$limit)';
}
@override
String get storeAsDefault => 'Store as default';
}

View file

@ -1612,4 +1612,7 @@ class AppLocalizationsSv extends AppLocalizations {
String additionalUserSelectButton(Object limit, Object used) {
return 'Select users ($used/$limit)';
}
@override
String get storeAsDefault => 'Store as default';
}

@ -1 +1 @@
Subproject commit 2c12b3fe70dd47a4f4006205480e94172792beed
Subproject commit 775c0ffd9523177478681ecff4e8c4613bf57ee3

View file

@ -0,0 +1,91 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:twonly/src/utils/misc.dart';
class SelectShowTime extends StatefulWidget {
const SelectShowTime({
required this.initialItem,
required this.setMaxShowTime,
required this.options,
super.key,
});
final int initialItem;
final void Function(int?, bool) setMaxShowTime;
final List<int?> options;
@override
State<SelectShowTime> createState() => _SelectShowTimeState();
}
class _SelectShowTimeState extends State<SelectShowTime> {
bool _storeAsDefault = false;
int? _selectedItem;
@override
Widget build(BuildContext context) {
return Container(
height: 350,
padding: const EdgeInsets.only(top: 6),
margin: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
color: CupertinoColors.systemBackground.resolveFrom(context),
child: SafeArea(
top: false,
child: Column(
children: [
Container(
margin: const EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(32),
color: Colors.grey,
),
height: 3,
width: 60,
),
Expanded(
child: CupertinoPicker(
magnification: 1.22,
squeeze: 1.2,
useMagnifier: true,
itemExtent: 32,
scrollController: FixedExtentScrollController(
initialItem: widget.initialItem,
),
onSelectedItemChanged: (int selectedItem) {
_selectedItem = selectedItem;
widget.setMaxShowTime(
widget.options[selectedItem],
_storeAsDefault,
);
},
children: widget.options.map((e) {
return Center(
child: Text(e == null ? '' : '${e ~/ 1000}s'),
);
}).toList(),
),
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Checkbox(
value: _storeAsDefault,
onChanged: (value) => setState(() {
_storeAsDefault = !_storeAsDefault;
if (_selectedItem != null) {
widget.setMaxShowTime(
widget.options[_selectedItem!],
_storeAsDefault,
);
}
}),
),
Text(context.lang.storeAsDefault),
],
),
],
),
),
);
}
}

View file

@ -4,7 +4,6 @@ import 'dart:async';
import 'dart:collection';
import 'package:clock/clock.dart';
import 'package:drift/drift.dart' show Value;
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
@ -25,6 +24,7 @@ import 'package:twonly/src/views/camera/image_editor/data/image_item.dart';
import 'package:twonly/src/views/camera/image_editor/data/layer.dart';
import 'package:twonly/src/views/camera/image_editor/layers_viewer.dart';
import 'package:twonly/src/views/camera/image_editor/modules/all_emojis.dart';
import 'package:twonly/src/views/camera/share_image_components/select_show_time.dart';
import 'package:twonly/src/views/camera/share_image_view.dart';
import 'package:twonly/src/views/components/media_view_sizing.dart';
import 'package:twonly/src/views/components/notification_badge.dart';
@ -138,15 +138,17 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
setState(() {});
}
Future<void> _setMaxShowTime(int? maxShowTime) async {
Future<void> _setMaxShowTime(int? maxShowTime, bool storeAsDefault) async {
await mediaService.setDisplayLimit(maxShowTime);
if (!mounted) return;
setState(() {});
if (storeAsDefault) {
await updateUserdata((user) {
user.defaultShowTime = maxShowTime;
return user;
});
}
}
Future<void> _setImageDisplayTime() async {
if (media.type == MediaType.video) {
@ -181,36 +183,16 @@ class _ShareImageEditorView extends State<ShareImageEditorView> {
initialItem = options.length - 1;
}
}
await showCupertinoModalPopup<void>(
await showModalBottomSheet(
context: context,
builder: (BuildContext context) => Container(
height: 350,
padding: const EdgeInsets.only(top: 6),
margin:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
color: CupertinoColors.systemBackground.resolveFrom(context),
child: SafeArea(
top: false,
child: CupertinoPicker(
magnification: 1.22,
squeeze: 1.2,
useMagnifier: true,
itemExtent: 32,
scrollController: FixedExtentScrollController(
backgroundColor: Colors.black,
builder: (BuildContext context) {
return SelectShowTime(
initialItem: initialItem,
),
onSelectedItemChanged: (int selectedItem) {
_setMaxShowTime(options[selectedItem]);
},
children: options.map((e) {
return Center(
child: Text(e == null ? '' : '${e ~/ 1000}s'),
setMaxShowTime: _setMaxShowTime,
options: options,
);
}).toList(),
),
),
),
},
);
}