From 7b03c934cfa28fc5d85f3d59974bb0757a439911 Mon Sep 17 00:00:00 2001 From: Stein Milder Date: Tue, 8 Nov 2022 09:29:21 +0100 Subject: [PATCH] feat: translations --- .gitignore | 2 ++ .../flutter_community_chat/.flutter-plugins | 13 ----------- .../.flutter-plugins-dependencies | 1 - .../lib/flutter_community_chat.dart | 21 ++++++++++------- packages/flutter_community_chat/pubspec.lock | 4 ++-- .../.flutter-plugins | 9 -------- .../.flutter-plugins-dependencies | 1 - .../.flutter-plugins | 8 ------- .../.flutter-plugins-dependencies | 1 - .../lib/flutter_community_chat_view.dart | 1 + .../lib/src/components/chat_bottom.dart | 12 ++++------ .../lib/src/components/chat_detail_row.dart | 4 +--- .../lib/src/components/chat_row.dart | 4 +--- .../lib/src/config/chat_options.dart | 14 ++++++++--- .../lib/src/config/chat_translations.dart | 23 +++++++++++++++++++ .../lib/src/screens/chat_detail_screen.dart | 9 +++++--- .../lib/src/screens/chat_screen.dart | 18 ++++++++------- .../lib/src/screens/new_chat_screen.dart | 14 ++++++----- 18 files changed, 83 insertions(+), 76 deletions(-) delete mode 100644 packages/flutter_community_chat/.flutter-plugins delete mode 100644 packages/flutter_community_chat/.flutter-plugins-dependencies delete mode 100644 packages/flutter_community_chat_firebase/.flutter-plugins delete mode 100644 packages/flutter_community_chat_firebase/.flutter-plugins-dependencies delete mode 100644 packages/flutter_community_chat_view/.flutter-plugins delete mode 100644 packages/flutter_community_chat_view/.flutter-plugins-dependencies create mode 100644 packages/flutter_community_chat_view/lib/src/config/chat_translations.dart diff --git a/.gitignore b/.gitignore index d64ea24..69c8eb7 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,5 @@ migrate_working_dir/ .dart_tool/ .packages build/ +.flutter-plugins-dependencies +.flutter-plugins \ No newline at end of file diff --git a/packages/flutter_community_chat/.flutter-plugins b/packages/flutter_community_chat/.flutter-plugins deleted file mode 100644 index 0f25478..0000000 --- a/packages/flutter_community_chat/.flutter-plugins +++ /dev/null @@ -1,13 +0,0 @@ -# This is a generated file; do not edit or check into version control. -flutter_plugin_android_lifecycle=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-2.0.7/ -image_picker=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker-0.8.6/ -image_picker_android=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker_android-0.8.5+3/ -image_picker_for_web=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker_for_web-2.1.10/ -image_picker_ios=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker_ios-0.8.6+1/ -path_provider=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11/ -path_provider_android=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.21/ -path_provider_ios=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/ -path_provider_linux=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/ -path_provider_macos=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/ -path_provider_windows=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/ -sqflite=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/ diff --git a/packages/flutter_community_chat/.flutter-plugins-dependencies b/packages/flutter_community_chat/.flutter-plugins-dependencies deleted file mode 100644 index d1e633a..0000000 --- a/packages/flutter_community_chat/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"image_picker_ios","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker_ios-0.8.6+1/","native_build":true,"dependencies":[]},{"name":"path_provider_ios","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/","native_build":true,"dependencies":[]}],"android":[{"name":"flutter_plugin_android_lifecycle","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-2.0.7/","native_build":true,"dependencies":[]},{"name":"image_picker_android","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker_android-0.8.5+3/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"path_provider_android","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.21/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/","native_build":true,"dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/","native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/","native_build":false,"dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/","native_build":false,"dependencies":[]}],"web":[{"name":"image_picker_for_web","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/image_picker_for_web-2.1.10/","dependencies":[]}]},"dependencyGraph":[{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"image_picker","dependencies":["image_picker_android","image_picker_for_web","image_picker_ios"]},{"name":"image_picker_android","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"image_picker_for_web","dependencies":[]},{"name":"image_picker_ios","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_ios","path_provider_linux","path_provider_macos","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_ios","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"sqflite","dependencies":[]}],"date_created":"2022-11-07 15:48:01.951577","version":"3.3.7"} \ No newline at end of file diff --git a/packages/flutter_community_chat/lib/flutter_community_chat.dart b/packages/flutter_community_chat/lib/flutter_community_chat.dart index fd81a7e..ed9e127 100644 --- a/packages/flutter_community_chat/lib/flutter_community_chat.dart +++ b/packages/flutter_community_chat/lib/flutter_community_chat.dart @@ -14,14 +14,16 @@ export 'package:flutter_community_chat_view/flutter_community_chat_view.dart'; class CommunityChat extends StatelessWidget { const CommunityChat({ required this.dataProvider, - this.chatOptions = const ChatOptions(), + this.options = const ChatOptions(), + this.translations = const ChatTranslations(), this.imagePickerTheme = const ImagePickerTheme(), this.imagePickerConfig = const ImagePickerConfig(), super.key, }); final CommunityChatInterface dataProvider; - final ChatOptions chatOptions; + final ChatOptions options; + final ChatTranslations translations; final ImagePickerTheme imagePickerTheme; final ImagePickerConfig imagePickerConfig; @@ -34,7 +36,8 @@ class CommunityChat extends StatelessWidget { dataProvider.getChatUsers().then((users) => _push( context, NewChatScreen( - chatOptions: chatOptions, + options: options, + translations: translations, onPressCreateChat: (user) => dataProvider.createChat( PersonalChatModel(user: user), ), @@ -45,7 +48,8 @@ class CommunityChat extends StatelessWidget { Future _onPressChat(BuildContext context, ChatModel chat) => _push( context, ChatDetailScreen( - chatOptions: chatOptions, + options: options, + translations: translations, chat: chat, chatMessages: dataProvider.getMessagesStream(chat), onPressSelectImage: (ChatModel chat) => @@ -58,12 +62,12 @@ class CommunityChat extends StatelessWidget { Future _onPressSelectImage(BuildContext context, ChatModel chat) => showModalBottomSheet( context: context, - builder: (BuildContext context) => - chatOptions.imagePickerContainerBuilder( + builder: (BuildContext context) => options.imagePickerContainerBuilder( ImagePicker( - customButton: chatOptions.closeImagePickerButtonBuilder( + customButton: options.closeImagePickerButtonBuilder( context, () => Navigator.of(context).pop(), + translations, ), imagePickerTheme: imagePickerTheme, imagePickerConfig: imagePickerConfig, @@ -82,6 +86,7 @@ class CommunityChat extends StatelessWidget { chats: dataProvider.getChatsStream(), onPressStartChat: () => _onPressStartChat(context), onPressChat: (chat) => _onPressChat(context, chat), - chatOptions: chatOptions, + options: options, + translations: translations, ); } diff --git a/packages/flutter_community_chat/pubspec.lock b/packages/flutter_community_chat/pubspec.lock index 7397f94..61f22c6 100644 --- a/packages/flutter_community_chat/pubspec.lock +++ b/packages/flutter_community_chat/pubspec.lock @@ -188,7 +188,7 @@ packages: description: path: "packages/flutter_community_chat_view" ref: HEAD - resolved-ref: bfca7ca229a0f9e6749d079a5b447e50bef6d56f + resolved-ref: "4af8360850b7d8d220f3052e4be25d6eb45ef963" url: "https://github.com/Iconica-Development/flutter_community_chat.git" source: git version: "0.0.1" @@ -562,7 +562,7 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "3.1.0" + version: "3.1.1" xdg_directories: dependency: transitive description: diff --git a/packages/flutter_community_chat_firebase/.flutter-plugins b/packages/flutter_community_chat_firebase/.flutter-plugins deleted file mode 100644 index bd59222..0000000 --- a/packages/flutter_community_chat_firebase/.flutter-plugins +++ /dev/null @@ -1,9 +0,0 @@ -# This is a generated file; do not edit or check into version control. -cloud_firestore=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-3.2.0/ -cloud_firestore_web=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-2.8.10/ -firebase_auth=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_auth-3.11.2/ -firebase_auth_web=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-4.6.1/ -firebase_core=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.24.0/ -firebase_core_web=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-1.7.3/ -firebase_storage=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_storage-10.3.11/ -firebase_storage_web=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_storage_web-3.3.9/ diff --git a/packages/flutter_community_chat_firebase/.flutter-plugins-dependencies b/packages/flutter_community_chat_firebase/.flutter-plugins-dependencies deleted file mode 100644 index e66ab2a..0000000 --- a/packages/flutter_community_chat_firebase/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"cloud_firestore","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-3.2.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_auth-3.11.2/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.24.0/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_storage-10.3.11/","native_build":true,"dependencies":["firebase_core"]}],"android":[{"name":"cloud_firestore","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-3.2.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_auth-3.11.2/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.24.0/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_storage-10.3.11/","native_build":true,"dependencies":["firebase_core"]}],"macos":[{"name":"cloud_firestore","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/cloud_firestore-3.2.0/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_auth","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_auth-3.11.2/","native_build":true,"dependencies":["firebase_core"]},{"name":"firebase_core","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.24.0/","native_build":true,"dependencies":[]},{"name":"firebase_storage","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_storage-10.3.11/","native_build":true,"dependencies":["firebase_core"]}],"linux":[],"windows":[],"web":[{"name":"cloud_firestore_web","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/cloud_firestore_web-2.8.10/","dependencies":["firebase_core_web"]},{"name":"firebase_auth_web","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_auth_web-4.6.1/","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_core_web-1.7.3/","dependencies":[]},{"name":"firebase_storage_web","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/firebase_storage_web-3.3.9/","dependencies":["firebase_core_web"]}]},"dependencyGraph":[{"name":"cloud_firestore","dependencies":["cloud_firestore_web","firebase_core"]},{"name":"cloud_firestore_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_auth","dependencies":["firebase_auth_web","firebase_core"]},{"name":"firebase_auth_web","dependencies":["firebase_core","firebase_core_web"]},{"name":"firebase_core","dependencies":["firebase_core_web"]},{"name":"firebase_core_web","dependencies":[]},{"name":"firebase_storage","dependencies":["firebase_core","firebase_storage_web"]},{"name":"firebase_storage_web","dependencies":["firebase_core","firebase_core_web"]}],"date_created":"2022-11-07 15:48:03.926356","version":"3.3.7"} \ No newline at end of file diff --git a/packages/flutter_community_chat_view/.flutter-plugins b/packages/flutter_community_chat_view/.flutter-plugins deleted file mode 100644 index e7ae5a5..0000000 --- a/packages/flutter_community_chat_view/.flutter-plugins +++ /dev/null @@ -1,8 +0,0 @@ -# This is a generated file; do not edit or check into version control. -path_provider=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11/ -path_provider_android=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.21/ -path_provider_ios=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/ -path_provider_linux=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/ -path_provider_macos=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/ -path_provider_windows=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/ -sqflite=/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/ diff --git a/packages/flutter_community_chat_view/.flutter-plugins-dependencies b/packages/flutter_community_chat_view/.flutter-plugins-dependencies deleted file mode 100644 index bc3f090..0000000 --- a/packages/flutter_community_chat_view/.flutter-plugins-dependencies +++ /dev/null @@ -1 +0,0 @@ -{"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"path_provider_ios","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/","native_build":true,"dependencies":[]}],"android":[{"name":"path_provider_android","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.21/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/","native_build":true,"dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/","native_build":true,"dependencies":[]},{"name":"sqflite","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/sqflite-2.2.0+3/","native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/","native_build":false,"dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/steinmilder/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3/","native_build":false,"dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"path_provider","dependencies":["path_provider_android","path_provider_ios","path_provider_linux","path_provider_macos","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_ios","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]},{"name":"sqflite","dependencies":[]}],"date_created":"2022-11-07 15:48:06.563678","version":"3.3.7"} \ No newline at end of file diff --git a/packages/flutter_community_chat_view/lib/flutter_community_chat_view.dart b/packages/flutter_community_chat_view/lib/flutter_community_chat_view.dart index 52b5065..1cf80d0 100644 --- a/packages/flutter_community_chat_view/lib/flutter_community_chat_view.dart +++ b/packages/flutter_community_chat_view/lib/flutter_community_chat_view.dart @@ -6,6 +6,7 @@ library flutter_community_chat_view; export 'src/components/chat_row.dart'; export 'src/config/chat_options.dart'; +export 'src/config/chat_translations.dart'; export 'src/screens/chat_detail_screen.dart'; export 'src/screens/chat_screen.dart'; export 'src/screens/new_chat_screen.dart'; diff --git a/packages/flutter_community_chat_view/lib/src/components/chat_bottom.dart b/packages/flutter_community_chat_view/lib/src/components/chat_bottom.dart index ae57a27..a3a8c05 100644 --- a/packages/flutter_community_chat_view/lib/src/components/chat_bottom.dart +++ b/packages/flutter_community_chat_view/lib/src/components/chat_bottom.dart @@ -11,6 +11,7 @@ class ChatBottom extends StatefulWidget { required this.chat, required this.onMessageSubmit, required this.messageInputBuilder, + required this.translations, this.onPressSelectImage, super.key, }); @@ -18,8 +19,8 @@ class ChatBottom extends StatefulWidget { final Future Function(ChatModel chat, String text) onMessageSubmit; final TextInputBuilder messageInputBuilder; final Function(ChatModel)? onPressSelectImage; - final ChatModel chat; + final ChatTranslations translations; @override State createState() => _ChatBottomState(); @@ -46,9 +47,7 @@ class _ChatBottomState extends State { if (widget.onPressSelectImage != null) IconButton( onPressed: () => widget.onPressSelectImage!(widget.chat), - icon: const Icon( - Icons.image, - ), + icon: const Icon(Icons.image), ), IconButton( onPressed: () { @@ -59,13 +58,12 @@ class _ChatBottomState extends State { _textEditingController.clear(); } }, - icon: const Icon( - Icons.send, - ), + icon: const Icon(Icons.send), ), ], ), ), + widget.translations, ), ), ); diff --git a/packages/flutter_community_chat_view/lib/src/components/chat_detail_row.dart b/packages/flutter_community_chat_view/lib/src/components/chat_detail_row.dart index 56173f0..22c5554 100644 --- a/packages/flutter_community_chat_view/lib/src/components/chat_detail_row.dart +++ b/packages/flutter_community_chat_view/lib/src/components/chat_detail_row.dart @@ -58,9 +58,7 @@ class _ChatDetailRowState extends State { child: widget.message is ChatTextMessageModel ? Text( (widget.message as ChatTextMessageModel).text, - style: const TextStyle( - fontSize: 16, - ), + style: const TextStyle(fontSize: 16), overflow: TextOverflow.ellipsis, maxLines: 999, ) diff --git a/packages/flutter_community_chat_view/lib/src/components/chat_row.dart b/packages/flutter_community_chat_view/lib/src/components/chat_row.dart index 173fc03..bc0cb44 100644 --- a/packages/flutter_community_chat_view/lib/src/components/chat_row.dart +++ b/packages/flutter_community_chat_view/lib/src/components/chat_row.dart @@ -24,9 +24,7 @@ class ChatRow extends StatelessWidget { children: [ Padding( padding: const EdgeInsets.only(left: 10.0), - child: ChatImage( - image: image, - ), + child: ChatImage(image: image), ), Expanded( child: Padding( diff --git a/packages/flutter_community_chat_view/lib/src/config/chat_options.dart b/packages/flutter_community_chat_view/lib/src/config/chat_options.dart index 0bf832a..62f44c8 100644 --- a/packages/flutter_community_chat_view/lib/src/config/chat_options.dart +++ b/packages/flutter_community_chat_view/lib/src/config/chat_options.dart @@ -3,6 +3,7 @@ // SPDX-License-Identifier: BSD-3-Clause import 'package:flutter/material.dart'; +import 'package:flutter_community_chat_view/flutter_community_chat_view.dart'; class ChatOptions { const ChatOptions({ @@ -25,6 +26,7 @@ class ChatOptions { Widget _createNewChatButton( BuildContext context, VoidCallback onPressed, + ChatTranslations translations, ) => Padding( padding: const EdgeInsets.all(16.0), @@ -33,18 +35,19 @@ Widget _createNewChatButton( minimumSize: const Size.fromHeight(50), ), onPressed: onPressed, - child: const Text('Start chat'), + child: Text(translations.newChatButton), ), ); Widget _createMessageInput( TextEditingController textEditingController, Widget suffixIcon, + ChatTranslations translations, ) => TextField( controller: textEditingController, decoration: InputDecoration( - hintText: 'Schrijf hier je bericht', + hintText: translations.messagePlaceholder, suffixIcon: suffixIcon, ), ); @@ -72,10 +75,13 @@ Widget _createImagePickerContainer( Widget _createCloseImagePickerButton( BuildContext context, VoidCallback onPressed, + ChatTranslations translations, ) => ElevatedButton( onPressed: onPressed, - child: const Text('Annuleren'), + child: Text( + translations.cancelImagePickerBtn, + ), ); Scaffold _createScaffold( @@ -90,11 +96,13 @@ Scaffold _createScaffold( typedef ButtonBuilder = Widget Function( BuildContext context, VoidCallback onPressed, + ChatTranslations translations, ); typedef TextInputBuilder = Widget Function( TextEditingController textEditingController, Widget suffixIcon, + ChatTranslations translations, ); typedef ContainerBuilder = Widget Function( diff --git a/packages/flutter_community_chat_view/lib/src/config/chat_translations.dart b/packages/flutter_community_chat_view/lib/src/config/chat_translations.dart new file mode 100644 index 0000000..9a0233b --- /dev/null +++ b/packages/flutter_community_chat_view/lib/src/config/chat_translations.dart @@ -0,0 +1,23 @@ +// SPDX-FileCopyrightText: 2022 Iconica +// +// SPDX-License-Identifier: BSD-3-Clause + +class ChatTranslations { + const ChatTranslations({ + this.chatsTitle = 'Chats', + this.newChatButton = 'Start chat', + this.newChatTitle = 'Start chat', + this.image = 'Image', + this.searchPlaceholder = 'Search...', + this.cancelImagePickerBtn = 'Cancel', + this.messagePlaceholder = 'Write your message here...', + }); + + final String chatsTitle; + final String newChatButton; + final String newChatTitle; + final String image; + final String searchPlaceholder; + final String cancelImagePickerBtn; + final String messagePlaceholder; +} diff --git a/packages/flutter_community_chat_view/lib/src/screens/chat_detail_screen.dart b/packages/flutter_community_chat_view/lib/src/screens/chat_detail_screen.dart index 56a0fa4..db9a2a5 100644 --- a/packages/flutter_community_chat_view/lib/src/screens/chat_detail_screen.dart +++ b/packages/flutter_community_chat_view/lib/src/screens/chat_detail_screen.dart @@ -11,16 +11,18 @@ import 'package:flutter_community_chat_view/src/components/chat_image.dart'; class ChatDetailScreen extends StatelessWidget { const ChatDetailScreen({ - required this.chatOptions, + required this.options, required this.chat, required this.onMessageSubmit, + this.translations = const ChatTranslations(), this.chatMessages, this.onPressSelectImage, super.key, }); final ChatModel chat; - final ChatOptions chatOptions; + final ChatOptions options; + final ChatTranslations translations; final Stream>? chatMessages; final Function(ChatModel)? onPressSelectImage; final Future Function(ChatModel chat, String text) onMessageSubmit; @@ -81,9 +83,10 @@ class ChatDetailScreen extends StatelessWidget { ), ChatBottom( chat: chat, - messageInputBuilder: chatOptions.messageInputBuilder, + messageInputBuilder: options.messageInputBuilder, onPressSelectImage: onPressSelectImage, onMessageSubmit: onMessageSubmit, + translations: translations, ), ], ), diff --git a/packages/flutter_community_chat_view/lib/src/screens/chat_screen.dart b/packages/flutter_community_chat_view/lib/src/screens/chat_screen.dart index ae0a7aa..385bce6 100644 --- a/packages/flutter_community_chat_view/lib/src/screens/chat_screen.dart +++ b/packages/flutter_community_chat_view/lib/src/screens/chat_screen.dart @@ -3,21 +3,22 @@ // SPDX-License-Identifier: BSD-3-Clause import 'package:flutter/material.dart'; - import 'package:flutter_community_chat_interface/flutter_community_chat_interface.dart'; import 'package:flutter_community_chat_view/flutter_community_chat_view.dart'; import 'package:flutter_community_chat_view/src/services/date_formatter.dart'; class ChatScreen extends StatefulWidget { const ChatScreen({ - required this.chatOptions, + required this.options, required this.chats, required this.onPressStartChat, required this.onPressChat, + this.translations = const ChatTranslations(), super.key, }); - final ChatOptions chatOptions; + final ChatOptions options; + final ChatTranslations translations; final Stream> chats; final VoidCallback? onPressStartChat; final void Function(ChatModel chat) onPressChat; @@ -30,9 +31,9 @@ class _ChatScreenState extends State { final DateFormatter _dateFormatter = DateFormatter(); @override - Widget build(BuildContext context) => widget.chatOptions.scaffoldBuilder( + Widget build(BuildContext context) => widget.options.scaffoldBuilder( AppBar( - title: const Text('Chats'), + title: Text(widget.translations.chatsTitle), ), Column( children: [ @@ -49,7 +50,7 @@ class _ChatScreenState extends State { for (ChatModel chat in snapshot.data ?? []) GestureDetector( onTap: () => widget.onPressChat(chat), - child: widget.chatOptions.chatRowContainerBuilder( + child: widget.options.chatRowContainerBuilder( ChatRow( image: chat is PersonalChatModel ? chat.user.imageUrl @@ -62,7 +63,7 @@ class _ChatScreenState extends State { ? (chat.lastMessage! as ChatTextMessageModel) .text - : '📷 Afbeelding' + : '📷 ${widget.translations.image}' : null, lastUsed: chat.lastUsed != null ? _dateFormatter.format( @@ -79,9 +80,10 @@ class _ChatScreenState extends State { ), ), if (widget.onPressStartChat != null) - widget.chatOptions.newChatButtonBuilder( + widget.options.newChatButtonBuilder( context, widget.onPressStartChat!, + widget.translations, ), ], ), diff --git a/packages/flutter_community_chat_view/lib/src/screens/new_chat_screen.dart b/packages/flutter_community_chat_view/lib/src/screens/new_chat_screen.dart index 41cc5a2..3c18813 100644 --- a/packages/flutter_community_chat_view/lib/src/screens/new_chat_screen.dart +++ b/packages/flutter_community_chat_view/lib/src/screens/new_chat_screen.dart @@ -8,13 +8,15 @@ import 'package:flutter_community_chat_view/flutter_community_chat_view.dart'; class NewChatScreen extends StatefulWidget { const NewChatScreen({ - required this.chatOptions, + required this.options, required this.users, required this.onPressCreateChat, + this.translations = const ChatTranslations(), super.key, }); - final ChatOptions chatOptions; + final ChatOptions options; + final ChatTranslations translations; final List users; final Function(ChatUserModel) onPressCreateChat; @@ -51,12 +53,12 @@ class _NewChatScreenState extends State { child: TextField( focusNode: _textFieldFocusNode, onChanged: filterUsers, - decoration: const InputDecoration( - hintText: 'Zoeken...', + decoration: InputDecoration( + hintText: widget.translations.searchPlaceholder, ), ), ) - : const Text('Start een chat'), + : Text(widget.translations.newChatButton), actions: [ IconButton( onPressed: () { @@ -78,7 +80,7 @@ class _NewChatScreenState extends State { children: [ for (var user in _filteredUsers ?? widget.users) GestureDetector( - child: widget.chatOptions.chatRowContainerBuilder( + child: widget.options.chatRowContainerBuilder( ChatRow( image: user.imageUrl, title: user.name ?? '',