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: /// In en, this message translates to:
/// **'Select users ({used}/{limit})'** /// **'Select users ({used}/{limit})'**
String additionalUserSelectButton(Object limit, Object used); 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 class _AppLocalizationsDelegate

View file

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