Recently I've managed to implement an URL to my app to improve the knowledge about each card. However, when I used canLaunch and Launch everything was fine, but when I updated to canLaunchUrl and LaunchUrl, I got an error message 'The argument type 'String' can't be assigned to the parameter type 'Uri'.' Even after I corrected my androidmanifest problems, I'm still this problem. How to resolve it?
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';
final Uri url = Uri.parse('https://flutter.dev');
class analgesicos extends StatefulWidget {
const analgesicos({Key? key}) : super(key: key);
@override
State<analgesicos> createState() => _analgesicosState();
}
class _analgesicosState extends State<analgesicos> {
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
appBar: AppBar(
backgroundColor: Colors.teal,
centerTitle: true,
title: Text('Analgésicos',style: TextStyle(
fontFamily: 'fonts/Quicksand-Light.ttf',
fontSize: 22,
),),
),
body:
SingleChildScrollView(child: Container(
child: (
Column(crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
Padding(padding: const EdgeInsets.only(top: 10, bottom: 10),),
Container(width: 240.0,
height: 42.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20.0),
color: const Color(0xffc5fce1),
),
child: SizedBox(
child: Text(
'Não-opióides',
style: TextStyle(
fontFamily: 'Quicksand',
fontSize: 20,
color: Colors.black,
height: 1.7,
),
textAlign: TextAlign.center,
),
),
),
Divider(
height: 15),
const Material(
child: (const Card(
child: ListTile(
title: Text('Ácido acetilsalicílico', textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Comprimidos simples de 500 ou 650 mg
Indicação: Antipirético e analgésico.
Posologia odontológica: Uso interno (via oral)
Tomar 1 comprimido de 6/6 horas.''',textScaleFactor: 1.2,),
),
)),
),
Material(
child: (Card(
color: Colors.white,
child: GestureDetector(
child: Text("Bula ANVISA", textAlign: TextAlign.center,
style: TextStyle(decoration: TextDecoration.underline,
color: Colors.teal,
fontSize:18,
fontWeight: FontWeight.w500,
)),
onTap: () async {
const url = 'https://consultas.anvisa.gov.br/#/bulario/q/?nomeProduto=ACIDO ACETILSALICILICO';
if (await canLaunchUrl(url)) {
await launchUrl(url);
} else
// can't launch url, there is some error
throw "Could not launch $url";
},
),
)),
),
const Material(
child: (const Card(
child: ListTile(
title: Text('Dipirona sódica',textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Comprimidos simples de 500 e 1000 mg
Indicação: Dores leves ou moderadas, antipirético
Posologia odontológica: Uso interno (via oral)
Tomar 1 comprimido de 500 mg de 4/4 h ou 1000 mg de 6/6 horas, não ultrapassando 4 g diárias.''',textScaleFactor: 1.2,),
),
)),
),
const Material(
child: (const Card(
color: Colors.white,
child: ListTile(
title: Text('Bula ANVISA'),
),
)),
),
const Material(
child: (const Card(
child: ListTile(
title: Text('Dipirona sódica',textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Solução, gotas de 500 mg
Indicação: Dores leves ou moderadas, antipirético
Posologia odontológica: Uso interno (via oral)
Tomar 1 gota por cada 1 - 2 kg (peso), a cada 4/4 ou 6/6 horas.''',textScaleFactor: 1.2,),
),
)),
),
const Material(
child: (const Card(
color: Colors.white,
child: ListTile(
title: Text('Bula ANVISA'),
),
)),
),
const Material(
child: (const Card(
child: ListTile(
title: Text('Paracetamol',textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Comprimidos simples de 500 e 750 mg
Indicação: Dores leves ou moderadas, antipirético
Posologia odontológica: Uso interno (via oral)
Tomar 1 comprimido de 500 mg 4/4 horas, 750 mg de 6/6 horas, não ultrapassando 4 g diárias.''',textScaleFactor: 1.2,),
),
)),
),
const Material(
child: (const Card(
color: Colors.white,
child: ListTile(
title: Text('Bula ANVISA'),
),
)),
),
const Material(
child: (const Card(
child: ListTile(
title: Text('Paracetamol',textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Solução, gotas de 500 mg
Indicação: Dores leves ou moderadas, antipirético
Posologia odontológica: Uso interno (via oral)
Acima de 12 anos: Tomar 35 - 55 gotas, de 3 a 5 vezes ao dia.
Pediátricos: 1 gota/kg, não ultrapassando 35 gotas, 4/4 ou 6/6 horas.''',textScaleFactor: 1.2,),
),
)),
),
const Material(
child: (const Card(
color: Colors.white,
child: ListTile(
title: Text('Bula ANVISA'),
),
)),
),
Padding(padding: const EdgeInsets.only(top: 10, bottom: 10),),
Container(width: 240.0,
height: 42.0,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20.0),
color: const Color(0xffc5fce1),
),
child: SizedBox(
child: Text(
'Opióides',
style: TextStyle(
fontFamily: 'Quicksand',
fontSize: 20,
color: Colors.black,
height: 1.7,
),
textAlign: TextAlign.center,
),
),
),
Divider(
height: 15),
const Material(
child: (const Card(
child: ListTile(
title: Text('Tylex - Paracetamol Fosfato de Codeína',textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Comprimidos simples de paracetamol 350 mg fosfato de Codeína 7,5/30 mg
Indicação: Dor moderada a intensa
Posologia odontológica: Uso interno (via oral)
Tomar 1 comprimido de 6/6 horas.''',textScaleFactor: 1.2,),
),
)),
),
const Material(
child: (const Card(
color: Colors.white,
child: ListTile(
title: Text('Bula ANVISA'),
),
)),
),
const Material(
child: (const Card(
child: ListTile(
title: Text('Tramal - Cloridrato de Tramadol',textScaleFactor: 1.2,),
subtitle: Text('''
Apresentação: Cápsulas de 50 mg
Indicação: Dor moderada a intensa
Posologia odontológica: Uso interno (via oral)
Tomar 1 cápsula de 8/8h.''',textScaleFactor: 1.2,),
),
)),
),
const Material(
child: (const Card(
color: Colors.white,
child: ListTile(
title: Text('Bula ANVISA'),
),
)),
),
],)
),
),
));
}
}
CodePudding user response:
You need to convert String to Uri as you did it for flutter.dev
onTap: () async {
final url = Uri.parse(
'https://consultas.anvisa.gov.br/#/bulario/q/?nomeProduto=ACIDO ACETILSALICILICO');
if (await canLaunchUrl(url)) {
await launchUrl(url);
} else
// can't launch url, there is some error
throw "Could not launch $url";
},