From 5d6be746e58f8b5161699f2b83354a2bd57f213d Mon Sep 17 00:00:00 2001 From: Amrit Prakash Date: Thu, 2 Mar 2023 02:47:14 +0530 Subject: [PATCH] Open Urls in Company Detail Page . --- lib/src/pages/company_details.dart | 48 ++++++++++++++++++++++++++++-- pubspec.yaml | 1 + 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/lib/src/pages/company_details.dart b/lib/src/pages/company_details.dart index 713c698eef..fd1c7f6c5d 100644 --- a/lib/src/pages/company_details.dart +++ b/lib/src/pages/company_details.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; - import '../models/company_model.dart'; +import 'package:url_launcher/url_launcher.dart'; /// Popup page for viewing company details when a company /// is clicked on the Company Scoreboard page. @@ -19,6 +19,44 @@ class CompanyDetailPage extends StatefulWidget { class _CompanyDetailPageState extends State { late Color companyColor; + Future sendEmail(BuildContext context,Company company) async{ + SnackBar emailSnack = SnackBar( + content: Text("This company has not provided their email ."), + duration: Duration(seconds: 2), + ); + if(company.email == null){ + ScaffoldMessenger.of(context).showSnackBar(emailSnack); + }else{ + String email = Uri.encodeComponent(company.email!); + Uri mail = Uri.parse("mailto:${email}"); + print("hello"); + try { + await launchUrl(mail); + } + catch(e){} + } + } + + Future redirectSite(BuildContext context,Company company) async{ + SnackBar siteSnack = SnackBar( + content: Text("This company has not provided their site ."), + duration: Duration(seconds: 2), + ); + if(company.url == null){ + ScaffoldMessenger.of(context).showSnackBar(siteSnack); + } + else{ + String siteUrl = Uri.encodeComponent(company.url!); + Uri site = Uri.parse(siteUrl); + try { + await launchUrl(site); + } + catch(e){} + + } + } + + Widget buildOpenIssueList(Size size) { return Container( width: size.width, @@ -177,7 +215,9 @@ class _CompanyDetailPageState extends State { alignment: MainAxisAlignment.start, children: [ TextButton.icon( - onPressed: () {}, + onPressed: () { + sendEmail(context, widget.company); + }, icon: Icon( Icons.email, color: Colors.white, @@ -198,7 +238,9 @@ class _CompanyDetailPageState extends State { ), ), TextButton.icon( - onPressed: () {}, + onPressed: () { + redirectSite(context, widget.company); + }, icon: Icon( Icons.public, color: Colors.white, diff --git a/pubspec.yaml b/pubspec.yaml index 51fecb204d..fd4f778dfb 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -20,6 +20,7 @@ dependencies: intl: ^0.17.0 flutter_secure_storage: ^5.0.2 smooth_page_indicator: ^1.0.0+2 + url_launcher: ^6.1.10 #flutter_lints: ^1.0.4 dev_dependencies: