使用 URL 启动器插件时从 Firestore 调用 URL
Call a URL from Firestore when using URL Launcher Plugin
我正在使用 url_launcher plugin 并希望从 Firestore 集合中调用 URL,而不是将其硬编码到应用中。
我已经尝试了很多方法来做到这一点(Streambuilder 等...)但无济于事。在一个非常简单的示例中,使用下面的标准 url_launcher 示例代码,如何实现?
void main() {
runApp(Scaffold(
body: Center(
child: RaisedButton(
onPressed: _launchURL,
child: Text('Show Flutter homepage'),
),
),
));
}
_launchURL() async {
const url = 'https://flutter.dev'; // HERE IS WHERE I WANT TO CALL THE URL FROM FIRESTORE
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
您可以使用 FutureBuilder
完成此操作
您需要从 firestore
创造一个 returns 所需的 imageurl
的未来。以下代码基于我的 firestore 结构,您可能需要更改一些内容。
Future<DocumentSnapshot> geturl(){
final result = FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser.uid).get();
return result;
}
使用 FutureBuilder
从 firestore 加载“url”。
FutureBuilder(
future: geturl(),
builder: (context, snapshot){
if (snapshot.hasData){
final String url = snapshot.data.data()['imageUrl'].toString();
return GestureDetector(
onTap: () async{
await launch(url);
},
child: Text('Firestore url')
);
}
return Text('loading url');
}
)
我已经测试了这段代码,它工作得非常好。
我正在使用 url_launcher plugin 并希望从 Firestore 集合中调用 URL,而不是将其硬编码到应用中。
我已经尝试了很多方法来做到这一点(Streambuilder 等...)但无济于事。在一个非常简单的示例中,使用下面的标准 url_launcher 示例代码,如何实现?
void main() {
runApp(Scaffold(
body: Center(
child: RaisedButton(
onPressed: _launchURL,
child: Text('Show Flutter homepage'),
),
),
));
}
_launchURL() async {
const url = 'https://flutter.dev'; // HERE IS WHERE I WANT TO CALL THE URL FROM FIRESTORE
if (await canLaunch(url)) {
await launch(url);
} else {
throw 'Could not launch $url';
}
}
您可以使用 FutureBuilder
您需要从
firestore
创造一个 returns 所需的imageurl
的未来。以下代码基于我的 firestore 结构,您可能需要更改一些内容。Future<DocumentSnapshot> geturl(){ final result = FirebaseFirestore.instance.collection('users').doc(FirebaseAuth.instance.currentUser.uid).get(); return result; }
使用
FutureBuilder
从 firestore 加载“url”。FutureBuilder( future: geturl(), builder: (context, snapshot){ if (snapshot.hasData){ final String url = snapshot.data.data()['imageUrl'].toString(); return GestureDetector( onTap: () async{ await launch(url); }, child: Text('Firestore url') ); } return Text('loading url'); } )
我已经测试了这段代码,它工作得非常好。