Как добавить URL из облачного Firestore, используя пакет url_launcher - PullRequest
0 голосов
/ 21 февраля 2020

Я создаю макет карты во Flutter, используя Cloud Firestore. Карта содержит изображение, две кнопки Icon и немного текста. Я хочу, чтобы IconButtons открывал URL-ссылки, которые я добавляю как строку в Firebase. Как мне сделать это с пакетом url_launcher? Я попытался заменить const url = 'example.com'; внутри функции _launchURL на const url = record.url, но goth выдал неопределенную ошибку для record.

Я очень новичок в разработке и Stackoverflow, поэтому, если я смогу лучше структурировать вопрос, пожалуйста, дай мне знать. Спасибо!

          Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              IconButton(
                icon: Icon(FontAwesomeIcons.youtube),
                onPressed: _launchURL(),
              ),
              IconButton(
                icon: Icon(FontAwesomeIcons.google),
                onPressed: _launchURL(),
              ),
            ],
          ),
          Container(
            child: Text(record.gameParagraph),
          ),
        ],
        ),

_launchURL() async {
  const url = 'example.com'; // URL to be added from Cloud Firestore
  if (await canLaunch(url)){
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}

class Record {
  final String gameParagraph;
  final String url;
  final DocumentReference reference;

  Record.fromMap(Map<String, dynamic> map, {this.reference})
  : assert(map['gameParagraph'] != null),
    assert(map['url'] != null),
  gameParagraph = map['gameParagraph'],
  url = map['url'];

  Record.fromSnapshot(DocumentSnapshot snapshot)
  : this.fromMap(snapshot.data, reference: snapshot.reference);

  @override
  String toString() => "Record<$gameParagraph:$url>";

}

1 Ответ

0 голосов
/ 21 февраля 2020

вы можете добавить make _launchURL(), чтобы получить строковое значение, которое будет вашим URL _launchURL(String url), а затем

 _launchURL(String url) async {

  if (await canLaunch(url)){
    await launch(url);
  } else {
    throw 'Could not launch $url';
  }
}
//
 IconButton(
         icon: Icon(FontAwesomeIcons.google),
          onPressed: (){    
              _launchURL(url:record.url),// or _launchURL(record.url)}
          ),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...