Home > Mobile >  How should I insert an URL inside the text BulaANVISA?
How should I insert an URL inside the text BulaANVISA?

Time:07-13

I'm just beginner on flutter dev. I'd like to insert an URL to the text BulaANVISA (below Epinefrina box), and that will lead to this site "https://consultas.anvisa.gov.br/#/bulario/q/?numeroRegistro=103870078"

I've tried multiple ways, but I always get an error message. Could you help me figure this out?

class Antihistaminicos extends StatefulWidget {
  const Antihistaminicos({Key? key}) : super(key: key);

  @override
  State<Antihistaminicos> createState() => _AntihistaminicosState();
}

class _AntihistaminicosState extends State<Antihistaminicos> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        appBar: AppBar(
          backgroundColor: Colors.teal,
          centerTitle: true,
          title: Text(
            'Anti-histamínicos',
            style: TextStyle(
              fontFamily: 'fonts/Quicksand-Light.ttf',
              fontSize: 22,
            ),
          ),
        ),
        body: SingleChildScrollView(
          child: Container(
            child: (Column(
              crossAxisAlignment: CrossAxisAlignment.stretch,
              children: [
                Padding(padding: EdgeInsets.only(bottom: 10)),
                Text('Processo alérgicos',
                    style: const TextStyle(
                      fontWeight: FontWeight.bold,
                      fontSize: 16,
                    )),
                Divider(
                  endIndent: 45,
                  color: Colors.amber,
                  thickness: 3,
                ),
                Divider(
                  height: 10,
                  thickness: 0,
                ),
                const Material(
                  child: (const Card(
                    child: ListTile(
                      title: Text('Epinefrina'),
                      subtitle: Text('''Apresentação:  Ampolas de 1 ml
Indicação: Reações alérgicas e anafiláticas
Posologia odontológica: Uso interno (Intramuscular)
Adultos - Aplicações intramusculares ou subcutâneas de 0,3 - 0,5 ml (1:1000), com intervalos de 15 - 20 minutos se necessário.
Pediátricos - Aplicações intramusculares ou subcutâneas de 0,001 mg por kg, com intervalos de 15 - 20 minutos se necessário.
'''),
                    ),
                  )),
                ),
                const Material(
                  child: (const Card(
                    color: Colors.white,
                    child: ListTile(
                      title: Text('Bula ANVISA'),
                    ),
                  )),
                ),
                const Material(
                  child: (const Card(
                    child: ListTile(
                      title: Text('Prometazina'),
                      subtitle: Text(
                          '''Apresentação: Comprimidos revestidos de 25 mg, ou ampolas de 2 ml (50 mg de prometazina)
Indicação: Reações alérgicas e anafiláticas
Posologia odontológica: Uso interno (Via oral e intramuscular)
Tomar de 2 a 6 comprimidos ao dia, de acordo com a severidade do caso. Idealmente reservar uma dose maior para o período da noite.
*Possui efeito sedativo intenso. 

'''),
                    ),
                  )),
                ),
                const Material(
                  child: (const Card(
                    color: Colors.white,
                    child: ListTile(
                      title: Text('Bula ANVISA'),
                    ),
                  )),
                ),
              ],
            )),
          ),
        ));
  }
}

CodePudding user response:

Put it into a GestureDetector:

GestureDetector(child: Text('Bula ANVISA'), onTap: () {openLink();})

CodePudding user response:

You can use RichText to get tap event and link the URL.

title: RichText(
  text: TextSpan(
      text: 'Bula ANVISA',
      recognizer: TapGestureRecognizer()
        ..onTap = () {
          print("tapped");
        },
      children: [], // use children to have multiple spans
  ),
),

Or you can use onTap from ListTile

Material(
  child: Card(
    color: Colors.white,
    child: ListTile(
      onTap: () {
        launchUrl(url)
      },
      title: Text('Bula ANVISA'),
    ),
  ),
),

To launch url I am using url_launcher package.

  • Related