Flutter使用stack来实现悬浮UI

在这里插入图片描述

文章目录

stack特性

在Flutter中,你可以使用Stack和Positioned来创建悬浮 UI。Stack允许你将多个小部件叠放在一起,而Positioned则用于定位小部件在Stack中的位置。

示例

以下是一个简单的示例,演示如何创建一个悬浮按钮:

import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
   
  
  Widget build(BuildContext context) {
   
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Floating UI Example'),
        ),
        body: MyFloatingUI(),
      ),
    );
  }
}

class MyFloatingUI extends StatefulWidget {
   
  
  _MyFloatingUIState createState() => _MyFloatingUIState();
}

class _MyFloatingUIState extends State<MyFloatingUI> {
   
  bool isFloatingUIVisible = false;

  
  Widget build(BuildContext context) {
   
    return Stack(
      children: [
        // Your main content goes here
        Center(
          child: Text(
            'Main Content',
            style: TextStyle(fontSize: 20),
          ),
        ),
        
        // Floating UI
        Visibility(
          visible: isFloatingUIVisible,
          child: Positioned(
            bottom: 16,
            right: 16,
            child: FloatingActionButton(
              onPressed: () {
   
                // Handle floating button tap
                print('Floating Button Tapped');
              },
              child: Icon(Icons.add),
            ),
          ),
        ),
      ],
    );
  }

  // Show/hide the floating UI based on some condition
  void toggleFloatingUI() {
   
    setState(() {
   
      isFloatingUIVisible = !isFloatingUIVisible;
    });
  }
}

在这个例子中,MyFloatingUI是一个StatefulWidget,它包含一个Stack,其中包括了一个主要的内容(Text)和一个悬浮的按钮(FloatingActionButton)。通过Visibility小部件,可以根据条件来控制悬浮按钮的可见性。在这个例子中,isFloatingUIVisible为true时悬浮按钮可见,为false时不可见。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-10 15:38:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-10 15:38:01       101 阅读
  3. 在Django里面运行非项目文件

    2024-01-10 15:38:01       82 阅读
  4. Python语言-面向对象

    2024-01-10 15:38:01       91 阅读

热门阅读

  1. 如何彻底卸除Microsoft Edge浏览器

    2024-01-10 15:38:01       66 阅读
  2. LeetCode每日一题 | 2707. 字符串中的额外字符

    2024-01-10 15:38:01       65 阅读
  3. nodejs 服务端token 高效缓存验证

    2024-01-10 15:38:01       57 阅读
  4. 一种快速对32位/64位整数取模的方法

    2024-01-10 15:38:01       65 阅读
  5. HTML实战演练之比心

    2024-01-10 15:38:01       51 阅读
  6. Oracle19c文档 tnsnames.ora (三)

    2024-01-10 15:38:01       54 阅读
  7. 5个免费、跨平台的SQLite数据库可视化工具

    2024-01-10 15:38:01       55 阅读