TF-1510 Support right click to open browser context menu (Open new tab) for app grid
This commit is contained in:
@@ -0,0 +1,23 @@
|
|||||||
|
|
||||||
|
import 'package:flutter/widgets.dart';
|
||||||
|
import 'package:url_launcher/link.dart';
|
||||||
|
|
||||||
|
class LinkBrowserWidget extends StatelessWidget {
|
||||||
|
|
||||||
|
final Uri uri;
|
||||||
|
final Widget child;
|
||||||
|
|
||||||
|
const LinkBrowserWidget({
|
||||||
|
Key? key,
|
||||||
|
required this.uri,
|
||||||
|
required this.child
|
||||||
|
}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Link(
|
||||||
|
uri: uri,
|
||||||
|
builder: (context, function) => child
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
+31
-27
@@ -4,6 +4,7 @@ import 'package:core/presentation/utils/style_utils.dart';
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_svg/flutter_svg.dart';
|
import 'package:flutter_svg/flutter_svg.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:tmail_ui_user/features/base/widget/link_browser_widget.dart';
|
||||||
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/linagora_app.dart';
|
import 'package:tmail_ui_user/features/mailbox_dashboard/domain/app_dashboard/linagora_app.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart' as launcher;
|
import 'package:url_launcher/url_launcher.dart' as launcher;
|
||||||
|
|
||||||
@@ -18,35 +19,38 @@ class AppGridDashboardItem extends StatelessWidget {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Padding(
|
return Padding(
|
||||||
padding: const EdgeInsets.symmetric(vertical: 8),
|
padding: const EdgeInsets.symmetric(vertical: 8),
|
||||||
child: InkWell(
|
child: LinkBrowserWidget(
|
||||||
onTap: _openApp,
|
uri: app.appUri,
|
||||||
child: Column(children: [
|
child: InkWell(
|
||||||
app.iconName.endsWith("svg")
|
onTap: _openApp,
|
||||||
? SvgPicture.asset(
|
child: Column(children: [
|
||||||
_imagePaths.getConfigurationImagePath(app.iconName),
|
app.iconName.endsWith("svg")
|
||||||
width: 56,
|
? SvgPicture.asset(
|
||||||
height: 56,
|
_imagePaths.getConfigurationImagePath(app.iconName),
|
||||||
fit: BoxFit.fill)
|
width: 56,
|
||||||
: Image.asset(
|
height: 56,
|
||||||
_imagePaths.getConfigurationImagePath(app.iconName),
|
fit: BoxFit.fill)
|
||||||
width: 56,
|
: Image.asset(
|
||||||
height: 56,
|
_imagePaths.getConfigurationImagePath(app.iconName),
|
||||||
fit: BoxFit.fill),
|
width: 56,
|
||||||
Padding(
|
height: 56,
|
||||||
padding: const EdgeInsets.only(top: 8),
|
fit: BoxFit.fill),
|
||||||
child: Text(
|
Padding(
|
||||||
app.appName,
|
padding: const EdgeInsets.only(top: 8),
|
||||||
maxLines: 1,
|
child: Text(
|
||||||
textAlign: TextAlign.center,
|
app.appName,
|
||||||
softWrap: CommonTextStyle.defaultSoftWrap,
|
maxLines: 1,
|
||||||
overflow: CommonTextStyle.defaultTextOverFlow,
|
textAlign: TextAlign.center,
|
||||||
style: const TextStyle(
|
softWrap: CommonTextStyle.defaultSoftWrap,
|
||||||
color: AppColor.colorNameEmail,
|
overflow: CommonTextStyle.defaultTextOverFlow,
|
||||||
fontSize: 15
|
style: const TextStyle(
|
||||||
|
color: AppColor.colorNameEmail,
|
||||||
|
fontSize: 15
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
]),
|
||||||
]),
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user