Flutter宇宙星空效果插件cosmos的使用

发布于 1周前 作者 yibo5220 来自 Flutter

Flutter宇宙星空效果插件cosmos的使用

Cosmos Flutter Package ❤️

开发者:JeaFriday🎶

Cosmos Banner

这个包是为了整合许多开发者努力创建的复杂材料,确保你的应用程序不会在代码行上挣扎!

包含的内容

以下是该包中包含的一些主要组件:

  • CosmosAlert: 一个带有IOS、Material等选项的警报查看器。可以作为屏幕或只是显示警报。
  • Cosmos Buttons: 可定制且更易访问的按钮。
  • CosmosScroller: 一个自动滚动的布局。
  • CosmosBody: 一个快速(Column)布局,为Scaffold的小部件提供自动滚动功能。
  • CosmosTextBox: 完全可定制的TextField小部件。
  • CosmosFirebase: 用于Google Firebase的Flutter包。
  • CosmosTools: 包含你可能需要的潜在工具。

包文档

CosmosBackgroundImage

示例代码添加、编辑和更多背景图像到您的应用程序。

import 'package:cosmos/cosmos.dart';
import 'package:flutter/material.dart';

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const Scaffold(
      body: CosmosBackgroundImage(
        image: "assets/image.jpg", // 设置背景图片路径
        child: Center(), // 在背景上继续构建小部件树
      ),
    );
  }
}
CosmosTime

提供在您的Flutter应用程序中的时间相关功能。

import 'package:cosmos/cosmos.dart';
import 'package:flutter/material.dart';

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TextButton(
          onPressed: () {
            String dateTime = CosmosTime.getNowTimeString(); // 获取当前日期和时间
            print(dateTime);
          },
          child: const Text("data"),
        ),
      ),
    );
  }
}
CosmosAlert

展示各种样式的弹出框。

import 'package:cosmos/cosmos.dart';
import 'package:flutter/material.dart';

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: TextButton(
          onPressed: () {
            CosmosAlert.showAnimatedDialog(
              context,
              "title",
              "text",
            ); // 显示一个经典风格的弹出框
          },
          child: const Text("data"),
        ),
      ),
    );
  }
}
CosmosScroller

创建一个可滚动的小部件。

import 'package:cosmos/cosmos.dart';
import 'package:flutter/material.dart';

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: CosmosScroller(
          scrollDirection: Axis.horizontal, // 水平滚动方向
          children: [
            TextButton(
              onPressed: () {
                CosmosAlert.showCustomAlert(
                  context,
                  const Text("Hello World!"),
                );
              },
              child: const Text("data"),
            ),
          ],
        ),
      ),
    );
  }
}
CosmosBody

创建一个基于情况的可滚动Scaffold>body。

import 'package:cosmos/cosmos.dart';
import 'package:flutter/material.dart';

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: CosmosBody(
          scrollDirection: Axis.vertical, // 垂直滚动方向
          scrollable: true, // 是否可滚动
          children: [
            TextButton(
              onPressed: () {
                CosmosAlert.showCustomAlert(
                  context,
                  const Text("Hello World!"),
                );
              },
              child: const Text("data"),
            ),
          ],
        ),
      ),
    );
  }
}
示例应用完整示例

以下是一个完整的示例应用,展示了如何使用Cosmos插件来创建一个简单的用户界面,包括顶部栏、按钮、菜单和页面导航。

import 'package:cosmos/cosmos.dart';
import 'package:flutter/material.dart';

void main() => runApp(const CosmosExample());

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Cosmos Example App',
      home: HomePage(),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.black,
      body: CosmosBody(
        scrollable: true,
        scrollDirection: Axis.vertical,
        children: [
          CosmosTopBar(
            logo: const Text(
              "Cosmos!",
              style: TextStyle(
                fontWeight: FontWeight.bold,
                fontSize: 20,
                color: Colors.white,
              ),
            ),
            leftIcon: Icons.menu,
            rightIcon: Icons.whatshot,
            children: [
              CosmosButton.button(
                text: "Classic Button",
                onTap: () {},
              ),
              CosmosButton.borderButton(
                text: "Border Button",
                onTap: () {},
              ),
              Container(
                margin: const EdgeInsets.symmetric(horizontal: 10),
                width: 2,
                height: 20,
                color: Colors.white,
              ),
              CosmosButton.iconButton(
                icon: Icons.link,
                uri: "https://bybug.net",
              ),
              CosmosButton.iconButton(
                icon: Icons.menu,
                onTap: () {
                  CosmosSideMenu.openSideMenu();
                },
              ),
              CosmosButton.iconButton(
                icon: Icons.person,
                uri: "https://bybug.net",
              ),
            ],
          ),
          CosmosButton.borderButton(
            text: "Go to NewPage! (pushFromRightToLeft)",
            onTap: () {
              CosmosNavigator.pushFromRightToLeft(
                context,
                const NewPage(),
              );
            },
          ),
          CosmosButton.borderButton(
            text: "Show Toast",
            onTap: () {
              CosmosAlert.showToast(
                context,
                child: const Center(
                  child: Text(
                    "Hello World!",
                    style: TextStyle(color: Colors.white),
                  ),
                ),
              );
            },
          ),
        ],
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const Scaffold(
      backgroundColor: Colors.purple,
      body: Center(
        child: Text(
          "New Page!",
          style: TextStyle(
            color: Colors.white,
          ),
        ),
      ),
    );
  }
}

更多关于Flutter宇宙星空效果插件cosmos的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter宇宙星空效果插件cosmos的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何在Flutter项目中使用cosmos插件来创建宇宙星空效果的代码示例。cosmos是一个流行的Flutter包,可以用来生成动画的星空背景。

首先,确保你的Flutter项目已经设置好,并且你已经在pubspec.yaml文件中添加了cosmos依赖:

dependencies:
  flutter:
    sdk: flutter
  cosmos: ^0.6.0  # 请检查最新版本号并替换

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter应用中,你可以像下面这样使用Cosmos小部件来创建星空效果:

import 'package:flutter/material.dart';
import 'package:cosmos/cosmos.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Cosmos Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Cosmos Demo'),
        ),
        body: Center(
          child: Cosmos(
            // 配置Cosmos的参数
            containerColor: Colors.black,  // 背景颜色
            numberOfStars: 300,            // 星星的数量
            starSize: function: (double progress) => 3.0 + progress * 2.0, // 星星大小随时间变化
            starColor: Colors.white.withOpacity(0.8), // 星星颜色
            oneInXStarsHasACustomColor: 5, // 每5颗星星中有一颗自定义颜色
            customStarColors: [Colors.blue, Colors.red, Colors.green], // 自定义星星颜色
            minStarStride: 2.0,            // 星星移动的最小步长
            maxStarStride: 5.0,            // 星星移动的最大步长
            flutterStar: true,             // 使用Flutter风格的星星
            minSpeed: 1.0,                 // 星星的最小速度
            maxSpeed: 4.0,                 // 星星的最大速度
            customAnimationDuration: const Duration(seconds: 5), // 自定义动画时长
            customAnimationCurve: Curves.easeInOutQuad, // 自定义动画曲线
          ),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,并在Scaffoldbody中使用了Cosmos小部件。通过配置Cosmos的参数,你可以自定义星空的外观和动画效果。

  • containerColor:背景颜色,这里设置为黑色。
  • numberOfStars:星星的数量,这里设置为300颗。
  • starSize:星星大小随时间变化的函数。这里星星大小从3.0增加到5.0。
  • starColor:星星颜色,这里设置为带透明度的白色。
  • oneInXStarsHasACustomColor:每几颗星星中有一颗自定义颜色,这里设置为5。
  • customStarColors:自定义星星颜色列表。
  • minStarStridemaxStarStride:星星移动的最小和最大步长。
  • flutterStar:是否使用Flutter风格的星星。
  • minSpeedmaxSpeed:星星的最小和最大速度。
  • customAnimationDurationcustomAnimationCurve:自定义动画时长和曲线。

通过这些参数,你可以灵活地调整星空的外观和动画效果,以适应你的应用需求。

回到顶部