Krille/design improvements
This commit is contained in:
parent
cc95f119b3
commit
a263da8bf8
|
@ -1,5 +1,37 @@
|
||||||
PODS:
|
PODS:
|
||||||
|
- DKImagePickerController/Core (4.2.2):
|
||||||
|
- DKImagePickerController/ImageDataManager
|
||||||
|
- DKImagePickerController/Resource
|
||||||
|
- DKImagePickerController/ImageDataManager (4.2.2)
|
||||||
|
- DKImagePickerController/PhotoGallery (4.2.2):
|
||||||
|
- DKImagePickerController/Core
|
||||||
|
- DKPhotoGallery
|
||||||
|
- DKImagePickerController/Resource (4.2.2)
|
||||||
|
- DKPhotoGallery (0.0.14):
|
||||||
|
- DKPhotoGallery/Core (= 0.0.14)
|
||||||
|
- DKPhotoGallery/Model (= 0.0.14)
|
||||||
|
- DKPhotoGallery/Preview (= 0.0.14)
|
||||||
|
- DKPhotoGallery/Resource (= 0.0.14)
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageFLPlugin
|
||||||
|
- DKPhotoGallery/Core (0.0.14):
|
||||||
|
- DKPhotoGallery/Model
|
||||||
|
- DKPhotoGallery/Preview
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageFLPlugin
|
||||||
|
- DKPhotoGallery/Model (0.0.14):
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageFLPlugin
|
||||||
|
- DKPhotoGallery/Preview (0.0.14):
|
||||||
|
- DKPhotoGallery/Model
|
||||||
|
- DKPhotoGallery/Resource
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageFLPlugin
|
||||||
|
- DKPhotoGallery/Resource (0.0.14):
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageFLPlugin
|
||||||
- file_picker (0.0.1):
|
- file_picker (0.0.1):
|
||||||
|
- DKImagePickerController/PhotoGallery
|
||||||
- Flutter
|
- Flutter
|
||||||
- Firebase/Core (6.27.0):
|
- Firebase/Core (6.27.0):
|
||||||
- Firebase/CoreOnly
|
- Firebase/CoreOnly
|
||||||
|
@ -49,11 +81,14 @@ PODS:
|
||||||
- GoogleUtilities/Reachability (~> 6.5)
|
- GoogleUtilities/Reachability (~> 6.5)
|
||||||
- GoogleUtilities/UserDefaults (~> 6.5)
|
- GoogleUtilities/UserDefaults (~> 6.5)
|
||||||
- Protobuf (>= 3.9.2, ~> 3.9)
|
- Protobuf (>= 3.9.2, ~> 3.9)
|
||||||
|
- FLAnimatedImage (1.0.12)
|
||||||
- Flutter (1.0.0)
|
- Flutter (1.0.0)
|
||||||
- flutter_keyboard_visibility (0.7.0):
|
- flutter_keyboard_visibility (0.7.0):
|
||||||
- Flutter
|
- Flutter
|
||||||
- flutter_local_notifications (0.0.1):
|
- flutter_local_notifications (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- flutter_plugin_android_lifecycle (0.0.1):
|
||||||
|
- Flutter
|
||||||
- flutter_secure_storage (3.3.1):
|
- flutter_secure_storage (3.3.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
- flutter_sound (0.0.1):
|
- flutter_sound (0.0.1):
|
||||||
|
@ -112,6 +147,12 @@ PODS:
|
||||||
- Protobuf (3.12.0)
|
- Protobuf (3.12.0)
|
||||||
- receive_sharing_intent (0.0.1):
|
- receive_sharing_intent (0.0.1):
|
||||||
- Flutter
|
- Flutter
|
||||||
|
- SDWebImage (5.8.1):
|
||||||
|
- SDWebImage/Core (= 5.8.1)
|
||||||
|
- SDWebImage/Core (5.8.1)
|
||||||
|
- SDWebImageFLPlugin (0.4.0):
|
||||||
|
- FLAnimatedImage (>= 1.0.11)
|
||||||
|
- SDWebImage/Core (~> 5.6)
|
||||||
- share (0.5.2):
|
- share (0.5.2):
|
||||||
- Flutter
|
- Flutter
|
||||||
- sqflite (0.0.1):
|
- sqflite (0.0.1):
|
||||||
|
@ -140,6 +181,7 @@ DEPENDENCIES:
|
||||||
- Flutter (from `Flutter`)
|
- Flutter (from `Flutter`)
|
||||||
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
|
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
|
||||||
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
|
||||||
|
- flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
|
||||||
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
|
||||||
- flutter_sound (from `.symlinks/plugins/flutter_sound/ios`)
|
- flutter_sound (from `.symlinks/plugins/flutter_sound/ios`)
|
||||||
- image_picker (from `.symlinks/plugins/image_picker/ios`)
|
- image_picker (from `.symlinks/plugins/image_picker/ios`)
|
||||||
|
@ -157,6 +199,8 @@ DEPENDENCIES:
|
||||||
|
|
||||||
SPEC REPOS:
|
SPEC REPOS:
|
||||||
trunk:
|
trunk:
|
||||||
|
- DKImagePickerController
|
||||||
|
- DKPhotoGallery
|
||||||
- Firebase
|
- Firebase
|
||||||
- FirebaseAnalytics
|
- FirebaseAnalytics
|
||||||
- FirebaseCore
|
- FirebaseCore
|
||||||
|
@ -164,6 +208,7 @@ SPEC REPOS:
|
||||||
- FirebaseInstallations
|
- FirebaseInstallations
|
||||||
- FirebaseInstanceID
|
- FirebaseInstanceID
|
||||||
- FirebaseMessaging
|
- FirebaseMessaging
|
||||||
|
- FLAnimatedImage
|
||||||
- FMDB
|
- FMDB
|
||||||
- GoogleAppMeasurement
|
- GoogleAppMeasurement
|
||||||
- GoogleDataTransport
|
- GoogleDataTransport
|
||||||
|
@ -173,6 +218,8 @@ SPEC REPOS:
|
||||||
- OLMKit
|
- OLMKit
|
||||||
- PromisesObjC
|
- PromisesObjC
|
||||||
- Protobuf
|
- Protobuf
|
||||||
|
- SDWebImage
|
||||||
|
- SDWebImageFLPlugin
|
||||||
- SQLCipher
|
- SQLCipher
|
||||||
|
|
||||||
EXTERNAL SOURCES:
|
EXTERNAL SOURCES:
|
||||||
|
@ -186,6 +233,8 @@ EXTERNAL SOURCES:
|
||||||
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
|
:path: ".symlinks/plugins/flutter_keyboard_visibility/ios"
|
||||||
flutter_local_notifications:
|
flutter_local_notifications:
|
||||||
:path: ".symlinks/plugins/flutter_local_notifications/ios"
|
:path: ".symlinks/plugins/flutter_local_notifications/ios"
|
||||||
|
flutter_plugin_android_lifecycle:
|
||||||
|
:path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios"
|
||||||
flutter_secure_storage:
|
flutter_secure_storage:
|
||||||
:path: ".symlinks/plugins/flutter_secure_storage/ios"
|
:path: ".symlinks/plugins/flutter_secure_storage/ios"
|
||||||
flutter_sound:
|
flutter_sound:
|
||||||
|
@ -214,7 +263,9 @@ EXTERNAL SOURCES:
|
||||||
:path: ".symlinks/plugins/webview_flutter/ios"
|
:path: ".symlinks/plugins/webview_flutter/ios"
|
||||||
|
|
||||||
SPEC CHECKSUMS:
|
SPEC CHECKSUMS:
|
||||||
file_picker: 408623be2125b79a4539cf703be3d4b3abe5e245
|
DKImagePickerController: 4a3e7948a848c4348e600b3fe5ce41478835fa10
|
||||||
|
DKPhotoGallery: 0290d32343574f06eaa4c26f8f2f8a1035e916be
|
||||||
|
file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1
|
||||||
Firebase: fc4cbf6f1592636431821ef9a3c557e4dfd9f268
|
Firebase: fc4cbf6f1592636431821ef9a3c557e4dfd9f268
|
||||||
firebase_messaging: cffb57ce40958c6204f03fb0c81713e4cd1e240c
|
firebase_messaging: cffb57ce40958c6204f03fb0c81713e4cd1e240c
|
||||||
FirebaseAnalytics: 0ea640473474f036cabbc2576e20c2d63671c92f
|
FirebaseAnalytics: 0ea640473474f036cabbc2576e20c2d63671c92f
|
||||||
|
@ -223,9 +274,11 @@ SPEC CHECKSUMS:
|
||||||
FirebaseInstallations: 293f567159b6d66d1c990f13bb868066096c94ec
|
FirebaseInstallations: 293f567159b6d66d1c990f13bb868066096c94ec
|
||||||
FirebaseInstanceID: 3b119bfe90e904851218159c9a4ecb847cc51d18
|
FirebaseInstanceID: 3b119bfe90e904851218159c9a4ecb847cc51d18
|
||||||
FirebaseMessaging: ad9e1a80ea64905e01a0ce1b3eb76a2944544151
|
FirebaseMessaging: ad9e1a80ea64905e01a0ce1b3eb76a2944544151
|
||||||
|
FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
|
||||||
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
|
Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
|
||||||
flutter_keyboard_visibility: 6195387fb6d8f46e5cd6dda4a4154e41f800f545
|
flutter_keyboard_visibility: 6195387fb6d8f46e5cd6dda4a4154e41f800f545
|
||||||
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
|
flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186
|
||||||
|
flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
|
||||||
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
|
flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec
|
||||||
flutter_sound: 0e8163ceac1e00eb6d894e2ae4641ba726a2c479
|
flutter_sound: 0e8163ceac1e00eb6d894e2ae4641ba726a2c479
|
||||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||||
|
@ -233,7 +286,7 @@ SPEC CHECKSUMS:
|
||||||
GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020
|
GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020
|
||||||
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
|
GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d
|
||||||
GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
|
GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
|
||||||
image_picker: e3eacd46b94694dde7cf2705955cece853aa1a8f
|
image_picker: 66aa71bc96850a90590a35d4c4a2907b0d823109
|
||||||
nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
|
nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
|
||||||
OLMKit: 4ee0159d63feeb86d836fdcfefe418e163511639
|
OLMKit: 4ee0159d63feeb86d836fdcfefe418e163511639
|
||||||
open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d
|
open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d
|
||||||
|
@ -241,6 +294,8 @@ SPEC CHECKSUMS:
|
||||||
PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75
|
PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75
|
||||||
Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9
|
Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9
|
||||||
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1
|
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1
|
||||||
|
SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05
|
||||||
|
SDWebImageFLPlugin: 6c2295fb1242d44467c6c87dc5db6b0a13228fd8
|
||||||
share: bae0a282aab4483288913fc4dc0b935d4b491f2e
|
share: bae0a282aab4483288913fc4dc0b935d4b491f2e
|
||||||
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
|
sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0
|
||||||
sqflite_sqlcipher: 45e72be2f26bde6ad196ff8b084123d8634ba921
|
sqflite_sqlcipher: 45e72be2f26bde6ad196ff8b084123d8634ba921
|
||||||
|
|
|
@ -43,15 +43,17 @@ class PresenceListItem extends StatelessWidget {
|
||||||
width: 80,
|
width: 80,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
SizedBox(height: 9),
|
SizedBox(height: 16),
|
||||||
Avatar(user.avatarUrl, user.calcDisplayname()),
|
Avatar(user.avatarUrl, user.calcDisplayname()),
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.all(6.0),
|
padding: const EdgeInsets.only(left: 6.0, top: 6.0, right: 6.0),
|
||||||
child: Text(
|
child: Text(
|
||||||
user.calcDisplayname(),
|
user.calcDisplayname(),
|
||||||
overflow: TextOverflow.ellipsis,
|
overflow: TextOverflow.ellipsis,
|
||||||
maxLines: 1,
|
maxLines: 1,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
color: Color(0xFF555555),
|
||||||
|
fontSize: 13,
|
||||||
fontWeight: presence?.presence?.statusMsg == null
|
fontWeight: presence?.presence?.statusMsg == null
|
||||||
? null
|
? null
|
||||||
: FontWeight.bold,
|
: FontWeight.bold,
|
||||||
|
|
|
@ -7,6 +7,6 @@ extension StringColor on String {
|
||||||
number += codeUnitAt(i);
|
number += codeUnitAt(i);
|
||||||
}
|
}
|
||||||
number = (number % 10) * 25.5;
|
number = (number % 10) * 25.5;
|
||||||
return HSLColor.fromAHSL(1, number, 1, 0.35).toColor();
|
return HSLColor.fromAHSL(1, number, 1, 0.66).toColor();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -345,9 +345,7 @@ class _ChatState extends State<_Chat> {
|
||||||
}
|
}
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
extendBodyBehindAppBar: true,
|
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
backgroundColor: Theme.of(context).appBarTheme.color.withOpacity(0.95),
|
|
||||||
leading: selectMode
|
leading: selectMode
|
||||||
? IconButton(
|
? IconButton(
|
||||||
icon: Icon(Icons.close),
|
icon: Icon(Icons.close),
|
||||||
|
@ -587,7 +585,7 @@ class _ChatState extends State<_Chat> {
|
||||||
Theme.of(context).backgroundColor.withOpacity(0.8),
|
Theme.of(context).backgroundColor.withOpacity(0.8),
|
||||||
),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
crossAxisAlignment: CrossAxisAlignment.center,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: selectMode
|
children: selectMode
|
||||||
? <Widget>[
|
? <Widget>[
|
||||||
|
@ -638,80 +636,88 @@ class _ChatState extends State<_Chat> {
|
||||||
]
|
]
|
||||||
: <Widget>[
|
: <Widget>[
|
||||||
if (inputText.isEmpty)
|
if (inputText.isEmpty)
|
||||||
PopupMenuButton<String>(
|
Container(
|
||||||
icon: Icon(Icons.add),
|
height: 56,
|
||||||
onSelected: (String choice) async {
|
alignment: Alignment.center,
|
||||||
if (choice == 'file') {
|
child: PopupMenuButton<String>(
|
||||||
sendFileAction(context);
|
icon: Icon(Icons.add),
|
||||||
} else if (choice == 'image') {
|
onSelected: (String choice) async {
|
||||||
sendImageAction(context);
|
if (choice == 'file') {
|
||||||
}
|
sendFileAction(context);
|
||||||
if (choice == 'camera') {
|
} else if (choice == 'image') {
|
||||||
openCameraAction(context);
|
sendImageAction(context);
|
||||||
}
|
}
|
||||||
if (choice == 'voice') {
|
if (choice == 'camera') {
|
||||||
voiceMessageAction(context);
|
openCameraAction(context);
|
||||||
}
|
}
|
||||||
},
|
if (choice == 'voice') {
|
||||||
itemBuilder: (BuildContext context) =>
|
voiceMessageAction(context);
|
||||||
<PopupMenuEntry<String>>[
|
}
|
||||||
PopupMenuItem<String>(
|
},
|
||||||
value: 'file',
|
itemBuilder: (BuildContext context) =>
|
||||||
child: ListTile(
|
<PopupMenuEntry<String>>[
|
||||||
leading: CircleAvatar(
|
|
||||||
backgroundColor: Colors.green,
|
|
||||||
foregroundColor: Colors.white,
|
|
||||||
child: Icon(Icons.attachment),
|
|
||||||
),
|
|
||||||
title:
|
|
||||||
Text(L10n.of(context).sendFile),
|
|
||||||
contentPadding: EdgeInsets.all(0),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
PopupMenuItem<String>(
|
|
||||||
value: 'image',
|
|
||||||
child: ListTile(
|
|
||||||
leading: CircleAvatar(
|
|
||||||
backgroundColor: Colors.blue,
|
|
||||||
foregroundColor: Colors.white,
|
|
||||||
child: Icon(Icons.image),
|
|
||||||
),
|
|
||||||
title:
|
|
||||||
Text(L10n.of(context).sendImage),
|
|
||||||
contentPadding: EdgeInsets.all(0),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
if (!kIsWeb)
|
|
||||||
PopupMenuItem<String>(
|
PopupMenuItem<String>(
|
||||||
value: 'camera',
|
value: 'file',
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
leading: CircleAvatar(
|
leading: CircleAvatar(
|
||||||
backgroundColor: Colors.purple,
|
backgroundColor: Colors.green,
|
||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
child: Icon(Icons.camera_alt),
|
child: Icon(Icons.attachment),
|
||||||
),
|
),
|
||||||
title: Text(
|
title:
|
||||||
L10n.of(context).openCamera),
|
Text(L10n.of(context).sendFile),
|
||||||
contentPadding: EdgeInsets.all(0),
|
contentPadding: EdgeInsets.all(0),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (!kIsWeb)
|
|
||||||
PopupMenuItem<String>(
|
PopupMenuItem<String>(
|
||||||
value: 'voice',
|
value: 'image',
|
||||||
child: ListTile(
|
child: ListTile(
|
||||||
leading: CircleAvatar(
|
leading: CircleAvatar(
|
||||||
backgroundColor: Colors.red,
|
backgroundColor: Colors.blue,
|
||||||
foregroundColor: Colors.white,
|
foregroundColor: Colors.white,
|
||||||
child: Icon(Icons.mic),
|
child: Icon(Icons.image),
|
||||||
),
|
),
|
||||||
title: Text(
|
title: Text(
|
||||||
L10n.of(context).voiceMessage),
|
L10n.of(context).sendImage),
|
||||||
contentPadding: EdgeInsets.all(0),
|
contentPadding: EdgeInsets.all(0),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
],
|
if (!kIsWeb)
|
||||||
|
PopupMenuItem<String>(
|
||||||
|
value: 'camera',
|
||||||
|
child: ListTile(
|
||||||
|
leading: CircleAvatar(
|
||||||
|
backgroundColor: Colors.purple,
|
||||||
|
foregroundColor: Colors.white,
|
||||||
|
child: Icon(Icons.camera_alt),
|
||||||
|
),
|
||||||
|
title: Text(
|
||||||
|
L10n.of(context).openCamera),
|
||||||
|
contentPadding: EdgeInsets.all(0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
if (!kIsWeb)
|
||||||
|
PopupMenuItem<String>(
|
||||||
|
value: 'voice',
|
||||||
|
child: ListTile(
|
||||||
|
leading: CircleAvatar(
|
||||||
|
backgroundColor: Colors.red,
|
||||||
|
foregroundColor: Colors.white,
|
||||||
|
child: Icon(Icons.mic),
|
||||||
|
),
|
||||||
|
title: Text(L10n.of(context)
|
||||||
|
.voiceMessage),
|
||||||
|
contentPadding: EdgeInsets.all(0),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
EncryptionButton(room),
|
Container(
|
||||||
|
height: 56,
|
||||||
|
alignment: Alignment.center,
|
||||||
|
child: EncryptionButton(room),
|
||||||
|
),
|
||||||
Expanded(
|
Expanded(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
|
@ -733,6 +739,7 @@ class _ChatState extends State<_Chat> {
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
hintText:
|
hintText:
|
||||||
L10n.of(context).writeAMessage,
|
L10n.of(context).writeAMessage,
|
||||||
|
hintMaxLines: 1,
|
||||||
border: InputBorder.none,
|
border: InputBorder.none,
|
||||||
),
|
),
|
||||||
onChanged: (String text) {
|
onChanged: (String text) {
|
||||||
|
@ -760,15 +767,23 @@ class _ChatState extends State<_Chat> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
if (!kIsWeb && inputText.isEmpty)
|
if (!kIsWeb && inputText.isEmpty)
|
||||||
IconButton(
|
Container(
|
||||||
icon: Icon(Icons.mic),
|
height: 56,
|
||||||
onPressed: () =>
|
alignment: Alignment.center,
|
||||||
voiceMessageAction(context),
|
child: IconButton(
|
||||||
|
icon: Icon(Icons.mic),
|
||||||
|
onPressed: () =>
|
||||||
|
voiceMessageAction(context),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
if (kIsWeb || inputText.isNotEmpty)
|
if (kIsWeb || inputText.isNotEmpty)
|
||||||
IconButton(
|
Container(
|
||||||
icon: Icon(Icons.send),
|
height: 56,
|
||||||
onPressed: () => send(),
|
alignment: Alignment.center,
|
||||||
|
child: IconButton(
|
||||||
|
icon: Icon(Icons.send),
|
||||||
|
onPressed: () => send(),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
@ -8,11 +8,8 @@ import 'package:fluffychat/components/list_items/presence_list_item.dart';
|
||||||
import 'package:fluffychat/components/list_items/public_room_list_item.dart';
|
import 'package:fluffychat/components/list_items/public_room_list_item.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_speed_dial/flutter_speed_dial.dart';
|
|
||||||
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
|
import 'package:receive_sharing_intent/receive_sharing_intent.dart';
|
||||||
import 'package:share/share.dart';
|
import 'package:share/share.dart';
|
||||||
|
|
||||||
import '../components/theme_switcher.dart';
|
|
||||||
import '../components/adaptive_page_layout.dart';
|
import '../components/adaptive_page_layout.dart';
|
||||||
import '../components/list_items/chat_list_item.dart';
|
import '../components/list_items/chat_list_item.dart';
|
||||||
import '../components/matrix.dart';
|
import '../components/matrix.dart';
|
||||||
|
@ -289,7 +286,7 @@ class _ChatListState extends State<ChatList> {
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
elevation: _scrolledToTop ? 0 : null,
|
//elevation: _scrolledToTop ? 0 : null,
|
||||||
leading: selectMode != SelectMode.share
|
leading: selectMode != SelectMode.share
|
||||||
? null
|
? null
|
||||||
: IconButton(
|
: IconButton(
|
||||||
|
@ -297,60 +294,19 @@ class _ChatListState extends State<ChatList> {
|
||||||
onPressed: () =>
|
onPressed: () =>
|
||||||
Matrix.of(context).shareContent = null,
|
Matrix.of(context).shareContent = null,
|
||||||
),
|
),
|
||||||
automaticallyImplyLeading: false,
|
|
||||||
titleSpacing: 0,
|
titleSpacing: 0,
|
||||||
title: selectMode == SelectMode.share
|
title: selectMode == SelectMode.share
|
||||||
? Text(L10n.of(context).share)
|
? Text(L10n.of(context).share)
|
||||||
: Container(
|
: Padding(
|
||||||
height: 42,
|
padding: EdgeInsets.all(8),
|
||||||
margin: EdgeInsets.symmetric(horizontal: 8),
|
child: Expanded(
|
||||||
child: Material(
|
child: TextField(
|
||||||
elevation: 5,
|
autocorrect: false,
|
||||||
borderRadius: BorderRadius.circular(7),
|
controller: searchController,
|
||||||
child: Padding(
|
decoration: InputDecoration(
|
||||||
padding: EdgeInsets.all(8),
|
contentPadding: EdgeInsets.all(9),
|
||||||
child: Row(
|
border: InputBorder.none,
|
||||||
children: [
|
hintText: L10n.of(context).searchForAChat,
|
||||||
Builder(
|
|
||||||
builder: (context) => IconButton(
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
icon: Icon(Icons.menu),
|
|
||||||
onPressed: () =>
|
|
||||||
Scaffold.of(context).openDrawer(),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Expanded(
|
|
||||||
child: TextField(
|
|
||||||
autocorrect: false,
|
|
||||||
controller: searchController,
|
|
||||||
decoration: InputDecoration(
|
|
||||||
contentPadding: EdgeInsets.all(9),
|
|
||||||
border: InputBorder.none,
|
|
||||||
hintText:
|
|
||||||
L10n.of(context).searchForAChat,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
loadingPublicRooms
|
|
||||||
? Container(
|
|
||||||
alignment: Alignment.centerRight,
|
|
||||||
child: Container(
|
|
||||||
width: 20,
|
|
||||||
height: 20,
|
|
||||||
child:
|
|
||||||
CircularProgressIndicator(),
|
|
||||||
),
|
|
||||||
)
|
|
||||||
: IconButton(
|
|
||||||
padding: EdgeInsets.zero,
|
|
||||||
icon: Icon(Icons.account_circle),
|
|
||||||
onPressed: () =>
|
|
||||||
Navigator.of(context).push(
|
|
||||||
AppRoute.defaultRoute(
|
|
||||||
context,
|
|
||||||
SettingsView())),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -360,39 +316,14 @@ class _ChatListState extends State<ChatList> {
|
||||||
(AdaptivePageLayout.columnMode(context) ||
|
(AdaptivePageLayout.columnMode(context) ||
|
||||||
selectMode == SelectMode.share)
|
selectMode == SelectMode.share)
|
||||||
? null
|
? null
|
||||||
: SpeedDial(
|
: FloatingActionButton(
|
||||||
child: Icon(Icons.add),
|
child: Icon(Icons.add),
|
||||||
overlayColor: blackWhiteColor(context),
|
|
||||||
foregroundColor: Colors.white,
|
|
||||||
backgroundColor: Theme.of(context).primaryColor,
|
backgroundColor: Theme.of(context).primaryColor,
|
||||||
children: [
|
onPressed: () => Navigator.of(context)
|
||||||
SpeedDialChild(
|
.pushAndRemoveUntil(
|
||||||
child: Icon(Icons.people_outline),
|
AppRoute.defaultRoute(
|
||||||
foregroundColor: Colors.white,
|
context, NewPrivateChatView()),
|
||||||
backgroundColor: Colors.blue,
|
(r) => r.isFirst),
|
||||||
label: L10n.of(context).createNewGroup,
|
|
||||||
labelStyle: TextStyle(
|
|
||||||
fontSize: 18.0, color: Colors.black),
|
|
||||||
onTap: () => Navigator.of(context)
|
|
||||||
.pushAndRemoveUntil(
|
|
||||||
AppRoute.defaultRoute(
|
|
||||||
context, NewGroupView()),
|
|
||||||
(r) => r.isFirst),
|
|
||||||
),
|
|
||||||
SpeedDialChild(
|
|
||||||
child: Icon(Icons.person_add),
|
|
||||||
foregroundColor: Colors.white,
|
|
||||||
backgroundColor: Colors.green,
|
|
||||||
label: L10n.of(context).newPrivateChat,
|
|
||||||
labelStyle: TextStyle(
|
|
||||||
fontSize: 18.0, color: Colors.black),
|
|
||||||
onTap: () => Navigator.of(context)
|
|
||||||
.pushAndRemoveUntil(
|
|
||||||
AppRoute.defaultRoute(
|
|
||||||
context, NewPrivateChatView()),
|
|
||||||
(r) => r.isFirst),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
body: StreamBuilder(
|
body: StreamBuilder(
|
||||||
stream: Matrix.of(context).client.onSync.stream,
|
stream: Matrix.of(context).client.onSync.stream,
|
||||||
|
|
|
@ -260,13 +260,6 @@ packages:
|
||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.1"
|
version: "2.1.1"
|
||||||
flutter_speed_dial:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: flutter_speed_dial
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "1.2.5"
|
|
||||||
flutter_svg:
|
flutter_svg:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
|
|
|
@ -32,7 +32,6 @@ dependencies:
|
||||||
localstorage: ^3.0.1+4
|
localstorage: ^3.0.1+4
|
||||||
bubble: ^1.1.9+1
|
bubble: ^1.1.9+1
|
||||||
memoryfilepicker: ^0.1.1
|
memoryfilepicker: ^0.1.1
|
||||||
flutter_speed_dial: ^1.2.5
|
|
||||||
url_launcher: ^5.4.1
|
url_launcher: ^5.4.1
|
||||||
url_launcher_web: ^0.1.0
|
url_launcher_web: ^0.1.0
|
||||||
sqflite: ^1.2.0
|
sqflite: ^1.2.0
|
||||||
|
|
Loading…
Reference in a new issue