TF-1510 Support right click to open browser context menu (Open new tab) for app grid

This commit is contained in:
dab246
2023-03-01 18:21:45 +07:00
committed by Dat Vu
parent 9644c7bfe1
commit b593c8a823
2 changed files with 54 additions and 27 deletions
@@ -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
);
}
}
@@ -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
),
), ),
), ),
), ]),
]), ),
) )
); );
} }