Flutter LED指示灯效果插件led_bulb_indicator的使用

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

Flutter LED指示灯效果插件led_bulb_indicator的使用

插件简介

led_bulb_indicator 是一个简单的用于通过LED风格显示状态的插件。它支持四种状态:绿色、黄色、红色和关闭。

示例代码

import 'package:led_bulb_indicator/led_bulb_indicator.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      homeScreenColor: Colors.white,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('LED Bulb Indicator'),
        ),
        body: Center(
          child: LedBulbIndicator(
            initialState: LedBulbColors.red,
            glow: true,
            size: 50,
          ),
        ),
      ),
    );
  }
}

效果展示

特性

  • 支持四种状态:绿色、黄色、红色和关闭。

开始使用

在您的Flutter项目中,添加以下依赖项:

dependencies:
  led_bulb_indicator: ^0.0.1

然后导入插件:

import 'package:led_bulb_indicator/led_bulb_indicator.dart';

使用示例

LedBulbIndicator(
  initialState: LedBulbColors.red,
  glow: true,
  size: 50,
)

更多关于Flutter LED指示灯效果插件led_bulb_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter LED指示灯效果插件led_bulb_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,我可以为你提供一个关于如何在Flutter中使用led_bulb_indicator插件来实现LED指示灯效果的代码案例。这个插件通常用于在Flutter应用中模拟LED指示灯的开关效果。

首先,确保你已经在pubspec.yaml文件中添加了led_bulb_indicator依赖:

dependencies:
  flutter:
    sdk: flutter
  led_bulb_indicator: ^最新版本号 # 请替换为实际的最新版本号

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

接下来是一个简单的代码示例,展示如何使用led_bulb_indicator插件:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'LED Indicator Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('LED Indicator Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              SizedBox(
                width: 100,
                height: 100,
                child: LedBulbIndicator(
                  isOn: _isLedOn, // 控制LED开关的状态
                  colorOn: Colors.green, // LED打开时的颜色
                  colorOff: Colors.grey, // LED关闭时的颜色
                  animationDuration: Duration(milliseconds: 300), // 动画持续时间
                ),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: () {
                  setState(() {
                    _isLedOn = !_isLedOn; // 切换LED状态
                  });
                },
                child: Text(_isLedOn ? 'Turn Off LED' : 'Turn On LED'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

class _LedState extends State<MyApp> {
  bool _isLedOn = false; // LED初始状态为关闭
}

注意:在上面的代码中,由于MyApp类本身是无状态的,但我们需要维护LED的状态,因此通常我们会将状态管理移至一个StatefulWidget中。然而,为了简化示例,我直接在MyApp类中使用了_LedState(这不是最佳实践,但适用于这个简单示例)。在实际项目中,你应该考虑将状态管理逻辑移至一个单独的StatefulWidget中。

由于Flutter不允许直接在无状态组件中调用setState,上面的代码在严格意义上是有问题的。正确的做法是将LED状态管理移至一个StatefulWidget的子类中。下面是一个修正后的版本:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'LED Indicator Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: LedScreen(),
    );
  }
}

class LedScreen extends StatefulWidget {
  @override
  _LedScreenState createState() => _LedScreenState();
}

class _LedScreenState extends State<LedScreen> {
  bool _isLedOn = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('LED Indicator Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            SizedBox(
              width: 100,
              height: 100,
              child: LedBulbIndicator(
                isOn: _isLedOn,
                colorOn: Colors.green,
                colorOff: Colors.grey,
                animationDuration: Duration(milliseconds: 300),
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                setState(() {
                  _isLedOn = !_isLedOn;
                });
              },
              child: Text(_isLedOn ? 'Turn Off LED' : 'Turn On LED'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个修正后的版本中,我们将状态管理移至了LedScreen组件中,这是一个StatefulWidget。这样,我们就可以在按钮点击时安全地调用setState来更新LED的状态。

回到顶部