Flutter iOS风格指示器插件iosish_indicator的使用

Flutter iOS风格指示器插件iosish_indicator的使用

Iosish Indicator

Flutter Iosish Indicator 可以创建一个炫酷且简单的iOS风格浮动指示器,当静音/睡眠模式切换时可以显示。

Top

1

Bottom

2

它也支持暗模式!

3

Getting Started

Depend on it.

flutter pub add iosish_indicator

或者

在你的个人包的 pubspec.yaml 文件中添加以下行:

dependencies:
  iosish_indicator: ^1.0.0

然后运行 flutter pub get 来安装。

Import it.

import 'package:iosish_indicator/iosish_indicator.dart';

Create Indicator.

Iosish(context).createIndicator(
  // 添加属性到这里..
);

Props

属性 类型 默认值 描述
title String 必填 主指示器文本
position Position Position.top 指示器将显示的位置
duration Duration? Duration(seconds:2) 显示持续时间
haptic bool true 创建 HapticFeedback.heavyImpact() 触觉反馈
child Widget? null 放置在指示器左侧的小部件

Example

import 'package:iosish_indicator/iosish_indicator.dart';
...
Iosish(context).createIndicator(
  title: "Hello, Iosish Indicator!",
  position: Position.bottom,
  duration: const Duration(seconds: 2),
  child: const Icon(Icons.check_circle),
);

完整示例代码

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

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        brightness: Brightness.light,
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final TextEditingController textController = TextEditingController();
  final TextEditingController durationController = TextEditingController();

  Position position = Position.top;

  [@override](/user/override)
  void dispose() {
    super.dispose();
    textController.dispose();
    durationController.dispose();
  }

  Widget textField(TextEditingController controller, String hint) {
    return Padding(
      padding: const EdgeInsets.symmetric(vertical: 8),
      child: TextField(
        controller: controller,
        decoration: InputDecoration(
          enabledBorder: OutlineInputBorder(
              borderSide: BorderSide(
                  color: Theme.of(context).disabledColor, width: 1.0)),
          focusedBorder: OutlineInputBorder(
              borderSide: BorderSide(
                  color: Theme.of(context).primaryColor, width: 1.0)),
          labelText: hint,
          hintStyle: const TextStyle(color: Colors.grey),
          isDense: true,
        ),
      ),
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Iosish Indicator'),
      ),
      body: SafeArea(
        child: Padding(
          padding: const EdgeInsets.all(8.0),
          child: Column(
            children: [
              textField(textController, 'Title'),
              textField(durationController, 'Duration'),
              Row(
                children: [
                  Radio(
                    value: Position.top,
                    groupValue: position,
                    onChanged: (value) {
                      setState(() {
                        position = value as Position;
                      });
                    },
                  ),
                  const Text('Top'),
                  Radio(
                    value: Position.bottom,
                    groupValue: position,
                    onChanged: (value) {
                      setState(() {
                        position = value as Position;
                      });
                    },
                  ),
                  const Text('Bottom'),
                ],
              ),

              // 弹出按钮
              SizedBox(
                width: double.infinity,
                child: ElevatedButton(
                  child: const Text('Pop Up'),
                  onPressed: () {
                    Iosish(context).createIndicator(
                      title: textController.text,
                      position: position,
                      duration: Duration(
                        seconds: int.parse(
                          durationController.text.toString(),
                        ),
                      ),
                    );
                  },
                ),
              ),

              const Padding(
                padding: EdgeInsets.only(top: 20),
                child: Text('其他示例'),
              ),

              // 示例 1
              SizedBox(
                width: double.infinity,
                child: ElevatedButton(
                  child: const Text('弹出指纹解锁消息'),
                  onPressed: () {
                    Iosish(context).createIndicator(
                      title: "通过指纹解锁",
                      position: Position.bottom,
                      duration: const Duration(seconds: 3),
                      child: const Icon(Icons.fingerprint_outlined, color: Colors.lightGreen),
                    );
                  },
                ),
              ),

              // 示例 2
              SizedBox(
                width: double.infinity,
                child: ElevatedButton(
                  child: const Text('弹出登录成功消息'),
                  onPressed: () {
                    Iosish(context).createIndicator(
                      title: "欢迎回来,admin",
                      position: position,
                      duration: const Duration(seconds: 4),
                      child: const CircleAvatar(radius: 12),
                    );
                  },
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter iOS风格指示器插件iosish_indicator的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter iOS风格指示器插件iosish_indicator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


iosish_indicator 是一个 Flutter 插件,它提供了一个类似 iOS 风格的加载指示器(activity indicator)。这个插件可以帮助你在 Flutter 应用中实现与 iOS 原生应用相似的加载动画效果。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 iosish_indicator 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  iosish_indicator: ^1.0.0  # 请使用最新的版本号

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

使用插件

在你的 Flutter 应用中,你可以通过以下方式使用 iosish_indicator 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('iOS Style Indicator Example'),
        ),
        body: Center(
          child: IOSishIndicator(
            size: 50.0,  // 设置指示器的大小
            color: Colors.blue,  // 设置指示器的颜色
          ),
        ),
      ),
    );
  }
}

参数说明

IOSishIndicator 组件支持以下参数:

  • size: 指示器的大小,类型为 double,默认值为 20.0
  • color: 指示器的颜色,类型为 Color,默认值为 Colors.blue

自定义指示器

你可以通过调整 sizecolor 参数来自定义指示器的外观,使其更符合你的应用设计风格。

注意事项

  • iosish_indicator 插件主要模拟了 iOS 风格的加载指示器,因此在 Android 平台上使用时可能会有一些视觉上的不一致。如果你需要在 Android 平台上使用原生风格的加载指示器,可能需要考虑使用其他插件或自定义实现。

示例代码

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 iosish_indicator 插件:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('iOS Style Indicator Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Text('Loading...'),
              SizedBox(height: 20),
              IOSishIndicator(
                size: 50.0,
                color: Colors.blue,
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部