Usare gli Overlay in Flutter

Mattepuffo's logo
Usare gli Overlay in Flutter

Usare gli Overlay in Flutter

Overlay è un widget di Flutter che in pratica rappresenta un componente "indipendente" rispetto al resto.

Ad esempio possiamo usarlo per creare un tooltip a comparsa.

O per finestre "volanti" da usare come messaggi.

In questo articolo vediamo come usarlo per creare un tooltip:

import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Test',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Test'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final OverlayPortalController _controller = OverlayPortalController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: TextButton(
          onPressed: _controller.toggle,
          child: DefaultTextStyle(
            style: DefaultTextStyle.of(context).style.copyWith(fontSize: 20),
            child: OverlayPortal(
              controller: _controller,
              overlayChildBuilder: (BuildContext context) {
                return const Positioned(
                  left: 50,
                  bottom: 50,
                  child: ColoredBox(
                    color: Colors.amberAccent,
                    child: Text('tooltip'),
                  ),
                );
              },
              child: const Text(
                  'Clicca qui per visualizzare/nascondere il tooltip'),
            ),
          ),
        ),
      ),
    );
  }
}

Enjoy!


Condividi

Commentami!