mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 12:28:40 +00:00
fix #125
This commit is contained in:
parent
ac9820261c
commit
98b4c60e21
3 changed files with 47 additions and 8 deletions
|
|
@ -24,6 +24,7 @@ class UserData {
|
|||
ThemeMode? themeMode;
|
||||
Map<String, List<String>>? autoDownloadOptions;
|
||||
bool? storeMediaFilesInGallery;
|
||||
List<String>? lastUsedEditorEmojis;
|
||||
|
||||
final int userId;
|
||||
|
||||
|
|
|
|||
|
|
@ -25,7 +25,10 @@ UserData _$UserDataFromJson(Map<String, dynamic> json) => UserData(
|
|||
(k, e) =>
|
||||
MapEntry(k, (e as List<dynamic>).map((e) => e as String).toList()),
|
||||
)
|
||||
..storeMediaFilesInGallery = json['storeMediaFilesInGallery'] as bool?;
|
||||
..storeMediaFilesInGallery = json['storeMediaFilesInGallery'] as bool?
|
||||
..lastUsedEditorEmojis = (json['lastUsedEditorEmojis'] as List<dynamic>?)
|
||||
?.map((e) => e as String)
|
||||
.toList();
|
||||
|
||||
Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
||||
'username': instance.username,
|
||||
|
|
@ -39,6 +42,7 @@ Map<String, dynamic> _$UserDataToJson(UserData instance) => <String, dynamic>{
|
|||
'themeMode': _$ThemeModeEnumMap[instance.themeMode],
|
||||
'autoDownloadOptions': instance.autoDownloadOptions,
|
||||
'storeMediaFilesInGallery': instance.storeMediaFilesInGallery,
|
||||
'lastUsedEditorEmojis': instance.lastUsedEditorEmojis,
|
||||
'userId': instance.userId,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:twonly/src/utils/storage.dart';
|
||||
import 'package:twonly/src/views/camera/image_editor/data/data.dart';
|
||||
import 'package:twonly/src/views/camera/image_editor/data/layer.dart';
|
||||
|
||||
|
|
@ -10,6 +11,44 @@ class Emojis extends StatefulWidget {
|
|||
}
|
||||
|
||||
class _EmojisState extends State<Emojis> {
|
||||
List<String> lastUsed = emojis;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
initAsync();
|
||||
}
|
||||
|
||||
Future initAsync() async {
|
||||
final user = await getUser();
|
||||
if (user == null) return;
|
||||
setState(() {
|
||||
lastUsed = user.lastUsedEditorEmojis ?? [];
|
||||
lastUsed.addAll(emojis);
|
||||
});
|
||||
}
|
||||
|
||||
Future selectEmojis(String emoji) async {
|
||||
final user = await getUser();
|
||||
if (user == null) return;
|
||||
if (user.lastUsedEditorEmojis == null) {
|
||||
user.lastUsedEditorEmojis = [emoji];
|
||||
} else {
|
||||
user.lastUsedEditorEmojis!.insert(0, emoji);
|
||||
if (user.lastUsedEditorEmojis!.length > 12) {
|
||||
user.lastUsedEditorEmojis = user.lastUsedEditorEmojis!.sublist(0, 12);
|
||||
}
|
||||
}
|
||||
await updateUser(user);
|
||||
if (!context.mounted) return;
|
||||
Navigator.pop(
|
||||
context,
|
||||
EmojiLayerData(
|
||||
text: emoji,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SingleChildScrollView(
|
||||
|
|
@ -43,16 +82,11 @@ class _EmojisState extends State<Emojis> {
|
|||
mainAxisSpacing: 0.0,
|
||||
maxCrossAxisExtent: 60.0,
|
||||
),
|
||||
children: emojis.map((String emoji) {
|
||||
children: lastUsed.map((String emoji) {
|
||||
return GridTile(
|
||||
child: GestureDetector(
|
||||
onTap: () {
|
||||
Navigator.pop(
|
||||
context,
|
||||
EmojiLayerData(
|
||||
text: emoji,
|
||||
),
|
||||
);
|
||||
selectEmojis(emoji);
|
||||
},
|
||||
child: Container(
|
||||
padding: EdgeInsets.zero,
|
||||
|
|
|
|||
Loading…
Reference in a new issue