develop-unfocusTextField #56
@ -14,6 +14,7 @@ import '../../../../api/mhsl/server/feedback/addFeedbackParams.dart';
|
||||
import '../../../../model/accountData.dart';
|
||||
import '../../../../storage/base/settingsProvider.dart';
|
||||
import '../../../../widget/filePick.dart';
|
||||
import '../../../../widget/focusBehaviour.dart';
|
||||
import '../../../../widget/infoDialog.dart';
|
||||
|
||||
class FeedbackDialog extends StatefulWidget {
|
||||
@ -68,6 +69,7 @@ class _FeedbackDialogState extends State<FeedbackDialog> {
|
||||
),
|
||||
minLines: 4,
|
||||
maxLines: 7,
|
||||
onTapOutside: (PointerDownEvent event) => FocusBehaviour.textFieldTapOutside(context),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 10),
|
||||
|
@ -115,7 +115,7 @@ class _ChatViewState extends State<ChatView> {
|
||||
scale: 1.5,
|
||||
opacity: 1,
|
||||
repeat: ImageRepeat.repeat,
|
||||
invertColors: AppTheme.isDarkMode(context)
|
||||
invertColors: AppTheme.isDarkMode(context),
|
||||
)
|
||||
),
|
||||
child: data.primaryLoading() ? const LoadingSpinner() : Column(
|
||||
|
@ -14,6 +14,7 @@ import '../../../../api/marianumcloud/webdav/webdavApi.dart';
|
||||
import '../../../../model/chatList/chatProps.dart';
|
||||
import '../../../../storage/base/settingsProvider.dart';
|
||||
import '../../../../widget/filePick.dart';
|
||||
import '../../../../widget/focusBehaviour.dart';
|
||||
import '../../files/fileUploadDialog.dart';
|
||||
|
||||
class ChatTextfield extends StatefulWidget {
|
||||
@ -156,6 +157,7 @@ class _ChatTextfieldState extends State<ChatTextfield> {
|
||||
}
|
||||
setDraft(text);
|
||||
},
|
||||
onTapOutside: (PointerDownEvent event) => FocusBehaviour.textFieldTapOutside(context),
|
||||
),
|
||||
),
|
||||
const SizedBox(width: 15),
|
||||
|
@ -15,6 +15,7 @@ import '../../../api/mhsl/customTimetableEvent/update/updateCustomTimetableEvent
|
||||
import '../../../api/mhsl/customTimetableEvent/update/updateCustomTimetableEventParams.dart';
|
||||
import '../../../model/accountData.dart';
|
||||
import '../../../model/timetable/timetableProps.dart';
|
||||
import '../../../widget/focusBehaviour.dart';
|
||||
import '../../../widget/infoDialog.dart';
|
||||
import 'customTimetableColors.dart';
|
||||
|
||||
@ -67,6 +68,7 @@ class _AddCustomTimetableEventDialogState extends State<CustomTimetableEventEdit
|
||||
labelText: 'Terminname',
|
||||
border: OutlineInputBorder()
|
||||
),
|
||||
onTapOutside: (PointerDownEvent event) => FocusBehaviour.textFieldTapOutside(context),
|
||||
),
|
||||
),
|
||||
ListTile(
|
||||
@ -78,6 +80,7 @@ class _AddCustomTimetableEventDialogState extends State<CustomTimetableEventEdit
|
||||
labelText: 'Beschreibung',
|
||||
border: OutlineInputBorder()
|
||||
),
|
||||
onTapOutside: (PointerDownEvent event) => FocusBehaviour.textFieldTapOutside(context),
|
||||
),
|
||||
),
|
||||
const Divider(),
|
||||
|
7
lib/widget/focusBehaviour.dart
Normal file
7
lib/widget/focusBehaviour.dart
Normal file
@ -0,0 +1,7 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class FocusBehaviour {
|
||||
static void textFieldTapOutside(BuildContext context) {
|
||||
FocusScope.of(context).requestFocus(FocusNode());
|
||||
}
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class QuickMenu {
|
||||
static void quickMenu(BuildContext context, BuildContext widgetContext, List<PopupMenuItem<dynamic>> items) {
|
||||
final RenderBox overlay = Overlay.of(context).context.findRenderObject() as RenderBox;
|
||||
|
||||
final RenderBox widgetRenderBox = widgetContext.findRenderObject() as RenderBox;
|
||||
final Offset position = widgetRenderBox.localToGlobal(Offset.zero);
|
||||
|
||||
showMenu(
|
||||
context: context,
|
||||
position: RelativeRect.fromRect(
|
||||
Rect.fromPoints(
|
||||
position,
|
||||
position.translate(0, 0),
|
||||
),
|
||||
Offset.zero & overlay.size,
|
||||
),
|
||||
items: items,
|
||||
);
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user