balloon_widget 0.3.0 copy "balloon_widget: ^0.3.0" to clipboard
balloon_widget: ^0.3.0 copied to clipboard

Provide a simple balloon widget that can be placed widget tree

example/lib/main.dart

import 'package:balloon_widget/balloon_widget.dart';
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 Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
            seedColor: Colors.deepPurple,
            background: Colors.deepPurple.shade50),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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 showTooltip = ValueNotifier<bool>(true);

  @override
  Widget build(BuildContext context) {
    return BalloonTapDelegator(
        child: Scaffold(
            appBar: AppBar(
              backgroundColor: Theme.of(context).colorScheme.inversePrimary,
              title: Text(widget.title),
            ),
            body: Center(
                child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                  ...BalloonNipPosition.values.map((e) => Padding(
                        padding: const EdgeInsets.all(8.0),
                        child: Balloon(nipPosition: e, child: Text(e.name)),
                      )),
                ])),
            floatingActionButton: ValueListenableBuilder(
                valueListenable: showTooltip,
                builder: (context, value, child) {
                  return PositionedBalloon.decorateBuilder(
                    balloon: Balloon(
                      nipPosition: BalloonNipPosition.bottomRight,
                      color: Theme.of(context).colorScheme.secondary,
                      padding: EdgeInsets.zero,
                      child: Row(
                          crossAxisAlignment: CrossAxisAlignment.start,
                          children: [
                            Padding(
                              padding: const EdgeInsets.only(
                                  left: 8, top: 8, bottom: 8),
                              child: Text(
                                  'this balloon is\ncreated by\nfloating action button',
                                  style: TextStyle(
                                      color: Theme.of(context)
                                          .colorScheme
                                          .onSecondary),
                                  textAlign: TextAlign.right),
                            ),
                            IconButton(
                                iconSize: 24,
                                tooltip: 'close',
                                onPressed: () {
                                  showTooltip.value = false;
                                  print('close');
                                },
                                icon: const Icon(Icons.close,
                                    color: Colors.white)),
                          ]),
                    ),
                    balloonDecorateBuilder: (context, balloon) {
                      return AnimatedOpacity(
                          opacity: value ? 1.0 : 0.0,
                          duration: const Duration(milliseconds: 100),
                          curve: Curves.easeInOut,
                          child: balloon);
                    },
                    child: FloatingActionButton(
                      onPressed: () {
                        showTooltip.value = !showTooltip.value;
                      },
                      tooltip: 'open help',
                      child:
                          Icon(value ? Icons.close : Icons.live_help_outlined),
                    ),
                  );
                })));
  }
}
8
likes
0
points
23
downloads

Publisher

verified publishernote11.dev

Weekly Downloads

Provide a simple balloon widget that can be placed widget tree

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

defer_pointer, flutter

More

Packages that depend on balloon_widget