Flutter加载开关控制插件load_switch的使用

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

Flutter加载开关控制插件load_switch的使用

插件概述

load_switch 是一个用于Flutter应用程序中实现加载状态和开关效果的插件。它提供了丰富的自定义选项,包括不同的加载动画样式、颜色、形状等。该插件基于 flutter_spinkit 实现了多种炫酷的加载动画,并且可以方便地集成到你的项目中。

版本信息

  • 版本Version
  • 代码大小Size
  • 发布状态Publish Status

使用示例

默认用法

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool value = false;

  Future<bool> _getFuture() async {
    await Future.delayed(const Duration(seconds: 2));
    return !value;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Load Switch Example')),
        body: Center(
          child: LoadSwitch(
            value: value,
            future: _getFuture,
            style: SpinStyle.material,
            onChange: (v) {
              value = v;
              print('Value changed to $v');
              setState(() {});
            },
            onTap: (v) {
              print('Tapping while value is $v');
            },
          ),
        ),
      ),
    );
  }
}

自定义用法

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  bool value = false;

  Future<bool> _getFuture() async {
    await Future.delayed(const Duration(seconds: 2));
    return !value;
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Custom Load Switch Example')),
        body: Center(
          child: LoadSwitch(
            value: value,
            future: _getFuture,
            style: SpinStyle.material,
            curveIn: Curves.easeInBack,
            curveOut: Curves.easeOutBack,
            animationDuration: const Duration(milliseconds: 500),
            switchDecoration: (value) => BoxDecoration(
              color: value ? Colors.green[100] : Colors.red[100],
              borderRadius: BorderRadius.circular(30),
              shape: BoxShape.rectangle,
              boxShadow: [
                BoxShadow(
                  color: value
                      ? Colors.green.withOpacity(0.2)
                      : Colors.red.withOpacity(0.2),
                  spreadRadius: 5,
                  blurRadius: 7,
                  offset: const Offset(0, 3),
                ),
              ],
            ),
            spinColor: (value) =>
                value ? const Color.fromARGB(255, 41, 232, 31) : const Color.fromARGB(255, 255, 77, 77),
            spinStrokeWidth: 3,
            thumbDecoration: (value) => BoxDecoration(
              color: Colors.white,
              borderRadius: BorderRadius.circular(30),
              shape: BoxShape.rectangle,
              boxShadow: [
                BoxShadow(
                  color: value
                      ? Colors.green.withOpacity(0.2)
                      : Colors.red.withOpacity(0.2),
                  spreadRadius: 5,
                  blurRadius: 7,
                  offset: const Offset(0, 3),
                ),
              ],
            ),
            onChange: (v) {
              value = v;
              print('Value changed to $v');
              setState(() {});
            },
            onTap: (v) {
              print('Tapping while value is $v');
            },
          ),
        ),
      ),
    );
  }
}

加载动画样式

load_switch 内置了多种加载动画样式,以下是部分示例:

样式 效果
material material
cupertino cupertino
chasingDots chasingDots
circle circle
cubeGrid cubeGrid
dancingSquare dancingSquare

更多样式请参考 官方文档 或者 GitHub仓库

问题与功能建议

如果你发现了bug或者有新的功能需求,请前往 GitHub仓库 提交issue。

通过以上内容,你应该能够快速上手并灵活运用 load_switch 插件来为你的Flutter应用添加精美的加载开关效果。希望这个插件能为你的开发工作带来便利!


更多关于Flutter加载开关控制插件load_switch的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter加载开关控制插件load_switch的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter中使用load_switch插件的一个简单示例。假设load_switch是一个假想的插件,用于控制加载状态的开关(实际中你需要根据真实插件的文档进行调整)。由于load_switch并不是Flutter官方或广泛认知的插件,我将基于一个假设的API结构进行说明。

首先,确保在pubspec.yaml文件中添加该插件(如果它是一个真实的Flutter插件):

dependencies:
  flutter:
    sdk: flutter
  load_switch: ^x.y.z  # 替换为实际版本号

然后运行flutter pub get来获取依赖。

接下来,在你的Flutter应用中导入并使用这个插件。以下是一个简单的示例,展示如何控制一个加载状态的开关:

import 'package:flutter/material.dart';
import 'package:load_switch/load_switch.dart';  // 假设插件的导入路径

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

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

class LoadSwitchDemo extends StatefulWidget {
  @override
  _LoadSwitchDemoState createState() => _LoadSwitchDemoState();
}

class _LoadSwitchDemoState extends State<LoadSwitchDemo> with SingleTickerProviderStateMixin {
  bool isLoading = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Load Switch Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            LoadSwitch(
              value: isLoading,
              onChanged: (newValue) {
                setState(() {
                  isLoading = newValue;
                  // 根据加载状态执行相应操作,例如显示或隐藏加载指示器
                  if (isLoading) {
                    print("Loading started...");
                    // 这里可以添加实际的加载逻辑,例如启动网络请求
                  } else {
                    print("Loading stopped.");
                    // 停止加载逻辑
                  }
                });
              },
            ),
            SizedBox(height: 20),
            if (isLoading)
              CircularProgressIndicator()  // 显示加载指示器
            else
              Text('No Loading'),  // 或者显示其他内容
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们定义了一个LoadSwitchDemo组件,它包含一个LoadSwitch(假设的开关组件)和一个根据加载状态显示的加载指示器或文本。

  • LoadSwitch组件接收一个value属性,表示当前的加载状态,以及一个onChanged回调,当开关状态改变时调用。
  • onChanged回调中,我们使用setState方法来更新isLoading状态,并根据这个状态显示或隐藏CircularProgressIndicator

请注意,由于load_switch是一个假设的插件,你需要根据真实插件的API文档调整代码。例如,真实的插件可能有不同的属性名或方法签名。确保查阅相关文档以获取正确的使用方式。

回到顶部