From 02cfeef31e10b2c26b93f6a8cdf14a930957daa2 Mon Sep 17 00:00:00 2001 From: Oliver Walters Date: Thu, 21 Jan 2021 21:14:42 +1100 Subject: [PATCH] Add function to open a link - Does not seem to actually ... work.. yet --- lib/inventree/model.dart | 14 +++++++++++ lib/widget/category_display.dart | 1 + lib/widget/part_detail.dart | 17 +++++++------ pubspec.lock | 42 ++++++++++++++++++++++++++++++++ pubspec.yaml | 1 + 5 files changed, 68 insertions(+), 7 deletions(-) diff --git a/lib/inventree/model.dart b/lib/inventree/model.dart index 0938be0c..2dcf6aaf 100644 --- a/lib/inventree/model.dart +++ b/lib/inventree/model.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:InvenTree/api.dart'; import 'package:InvenTree/widget/dialogs.dart'; import 'package:flutter/cupertino.dart'; +import 'package:url_launcher/url_launcher.dart'; import 'dart:convert'; @@ -54,6 +55,19 @@ class InvenTreeModel { // Legacy API provided external link as "URL", while newer API uses "link" String get link => jsondata['link'] ?? jsondata['URL'] ?? ''; + void openLink() async { + + if (link.isNotEmpty) { + print("Opening link: ${link}"); + + if (await canLaunch(link)) { + await launch(url); + } else { + // TODO + } + } + } + String get keywords => jsondata['keywords'] as String ?? ''; // Create a new object from JSON data (not a constructor!) diff --git a/lib/widget/category_display.dart b/lib/widget/category_display.dart index 73bb0d15..46ddbe94 100644 --- a/lib/widget/category_display.dart +++ b/lib/widget/category_display.dart @@ -267,6 +267,7 @@ class PartList extends StatelessWidget { return ListTile( title: Text("${part.name}"), subtitle: Text("${part.description}"), + trailing: Text("${part.inStock}"), leading: InvenTreeAPI().getImage( part.thumbnail, width: 40, diff --git a/lib/widget/part_detail.dart b/lib/widget/part_detail.dart index ed366945..a06da60a 100644 --- a/lib/widget/part_detail.dart +++ b/lib/widget/part_detail.dart @@ -1,17 +1,18 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:url_launcher/url_launcher.dart'; + import 'package:InvenTree/inventree/part.dart'; import 'package:InvenTree/widget/category_display.dart'; import 'package:InvenTree/widget/dialogs.dart'; import 'package:InvenTree/widget/fields.dart'; import 'package:InvenTree/widget/part_stock_detail.dart'; -import 'package:flutter/cupertino.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; - import 'package:InvenTree/api.dart'; import 'package:InvenTree/widget/refreshable_state.dart'; -import 'package:InvenTree/widget/drawer.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class PartDetailWidget extends StatefulWidget { @@ -268,7 +269,9 @@ class _PartDisplayState extends RefreshableState { title: Text("${part.link}"), leading: FaIcon(FontAwesomeIcons.link), trailing: Text(""), - onTap: null, + onTap: () { + part.openLink(); + }, ) ); } diff --git a/pubspec.lock b/pubspec.lock index 6cb40211..600009f4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -511,6 +511,48 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.3.0-nullsafety.3" + url_launcher: + dependency: "direct main" + description: + name: url_launcher + url: "https://pub.dartlang.org" + source: hosted + version: "5.7.10" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+4" + url_launcher_macos: + dependency: transitive + description: + name: url_launcher_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+9" + url_launcher_platform_interface: + dependency: transitive + description: + name: url_launcher_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.9" + url_launcher_web: + dependency: transitive + description: + name: url_launcher_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+3" usage: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 0aae04ad..7145d90c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -35,6 +35,7 @@ dependencies: sentry: ^3.0.1 # Error reporting flutter_typeahead: ^1.8.1 # Auto-complete input field image_picker: ^0.6.6 # Select or take photos + url_launcher: ^5.7.10 # Open link in system browser camera: path_provider: