Как вызвать URL-адрес по OnTap для каждой сетки в макете сетки?Каждая сетка должна открывать свой URL - PullRequest
0 голосов
/ 26 апреля 2019

Итак, у меня здесь два списка:
image: Содержит изображения, отображаемые над плиткой сетки.
directLinks: содержит ссылки, которые должны быть открыты с помощью 'onTap' для каждой плитки сетки

Я не хочу назначать launch_url для каждой сетки, сетка выглядит следующим образом . Что делать? Каждый элемент сетки должен перенести меня на новый веб-сайт, отображаемый в WebView. Я не нашел подходящего способа сделать это без ввода url отдельно для каждой плитки сетки. Извините, я новичок.

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

class ExampleGrid extends StatelessWidget {
  List<String> images = [
    "https://uae.microless.com/cdn/no_image.jpg",
    "https://images-na.ssl-images-amazon.com/images/I/81aF3Ob-2KL._UX679_.jpg",
    "https://www.boostmobile.com/content/dam/boostmobile/en/products/phones/apple/iphone-7/silver/device-front.png.transform/pdpCarousel/image.jpg",
    "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSgUgs8_kmuhScsx-J01d8fA1mhlCR5-1jyvMYxqCB8h3LCqcgl9Q",
    "https://ae01.alicdn.com/kf/HTB11tA5aiAKL1JjSZFoq6ygCFXaw/Unlocked-Samsung-GALAXY-S2-I9100-Mobile-Phone-Android-Wi-Fi-GPS-8-0MP-camera-Core-4.jpg_640x640.jpg",
    "https://media.ed.edmunds-media.com/gmc/sierra-3500hd/2018/td/2018_gmc_sierra-3500hd_f34_td_411183_1600.jpg",
    "https://hips.hearstapps.com/amv-prod-cad-assets.s3.amazonaws.com/images/16q1/665019/2016-chevrolet-silverado-2500hd-high-country-diesel-test-review-car-and-driver-photo-665520-s-original.jpg",
    "https://www.galeanasvandykedodge.net/assets/stock/ColorMatched_01/White/640/cc_2018DOV170002_01_640/cc_2018DOV170002_01_640_PSC.jpg",
    "https://media.onthemarket.com/properties/6191869/797156548/composite.jpg",
    "https://media.onthemarket.com/properties/6191840/797152761/composite.jpg",
  ];

  List<String> directLinks = [
    "https://google.com",
    "https://amazon.com/",
    "https://www.boostmobile.com/",
    "https://gmail.com",
    "https://samsung.com",
    "https://eminem.com",
    "https://facebook.com",
    "https://www.galeanasvandykedodge.net",
    "https://flipkart.com",
    "https://apple.com",
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: GridView(
        physics:
            BouncingScrollPhysics(), 
        gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
            crossAxisCount: 2),
        children: images.map((url) {
          return ListTile(
              onTap: _launchURL, title: Card(child: Image.network(url)));
        }).toList(),
      ),
    );
  }
}

void _launchURL(int index) async {
  const url = "";
  if (await canLaunch(url)) {
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}
...