Flutter基础组件插件simple_widget的使用

Flutter基础组件插件simple_widget的使用

简介

simple_widget 是一个用于创建基于时间线的原生小部件的 Flutter 插件。通过该插件,您可以将 Flutter 小部件转换为图像并生成 Base64 编码字符串,然后将其作为时间线小部件提供给系统。

创建一个带有 Flutter 小部件的时间线原生小部件!


截图

iOS

Android


使用此插件的应用

您可以查看以下应用以了解如何使用此插件:

  • Widget Maker: 一款允许您创建自定义小部件的应用。

工作原理

如果您想创建时间线小部件,此插件非常适合您。时间线小部件会提前计算并提供给系统。

您需要将小部件转换为图像,然后将其转换为 Base64 字符串。之后,将 Base64 字符串和显示时间提供给插件。


入门指南

请查看文档文件夹以获取有关如何使用插件的详细说明。


安装

pubspec.yaml 文件中添加以下依赖项:

dependencies:
  simple_widget: any       # 添加此行

运行 flutter pub get 以安装插件。


示例代码

以下是一个完整的示例代码,展示如何使用 simple_widget 插件。

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:simple_widget_example/widgets_screen.dart';
import 'package:simple_widget/simple_widget.dart';

import 'off_topic/app_button.dart';
import 'game_widget_example.dart';
import 'multiple_types_example.dart';
import 'one_widget_example.dart';

void main() {
  SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
    systemNavigationBarColor: Colors.white,
    statusBarColor: Colors.white,
    statusBarIconBrightness: Brightness.dark,
    statusBarBrightness: Brightness.light,
  ));
  runApp(const MyApp());
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final _simpleWidgetPlugin = SimpleWidget();

  [@override](/user/override)
  void initState() {
    super.initState();

    _setup();
  }

  void _setup() async {
    await _simpleWidgetPlugin.setGroupID("group.abedalkareem.widgets");
    await _simpleWidgetPlugin.setAppScheme("widgets");
    _listenForWidgetClicked();
  }

  void _listenForWidgetClicked() {
    _simpleWidgetPlugin.widgetClicked.listen((event) async {
      debugPrint(event.toString());
      final id = event?.queryParameters["id"];
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => WidgetsScreen(
            id: id ?? "",
          ),
        ),
      );
      debugPrint(id);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        colorScheme: const ColorScheme.light(
          primary: Colors.white,
          secondary: Colors.black,
          onPrimary: Colors.white,
        ),
        appBarTheme: const AppBarTheme(
          color: Colors.white,
          elevation: 0,
          foregroundColor: Colors.black,
          titleTextStyle: TextStyle(
            color: Colors.black,
            fontSize: 30,
            fontFamily: "Michelia",
          ),
        ),
      ),
      home: const HomeScreen(),
    );
  }
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({super.key});

  [@override](/user/override)
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final _simpleWidgetPlugin = SimpleWidget();

  [@override](/user/override)
  void initState() {
    super.initState();

    _setup();
  }

  void _setup() async {
    await _simpleWidgetPlugin.setGroupID("group.abedalkareem.widgets");
    await _simpleWidgetPlugin.setAppScheme("widgets");
    _listenForWidgetClicked();
  }

  void _listenForWidgetClicked() {
    if (Platform.isIOS) {
      return;
    }
    _simpleWidgetPlugin.widgetClicked.listen((event) async {
      debugPrint(event.toString());
      final id = event?.queryParameters["id"];
      Navigator.push(
        context,
        MaterialPageRoute(
          builder: (context) => WidgetsScreen(
            id: id ?? "",
          ),
        ),
      );
      debugPrint(id);
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Simple widget example'),
      ),
      body: Container(
        color: Colors.white,
        child: Center(
          child: Column(
            mainAxisSize: MainAxisSize.min,
            children: [
              AppButton(
                onPressed: () async {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const MultipleTypesExample()),
                  );
                },
                text: "Multiple types example",
              ),
              AppButton(
                onPressed: () async {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const OneWidgetExample()),
                  );
                },
                text: "One widget example",
              ),
              AppButton(
                onPressed: () async {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const GameWidgetExample()),
                  );
                },
                text: "Game widget example",
              ),
              AppButton(
                onPressed: () async {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                        builder: (context) => const WidgetsScreen(
                              id: '',
                            )),
                  );
                },
                text: "View widgets",
              ),
            ],
          ),
        ),
      ),
    );
  }
}

更多关于Flutter基础组件插件simple_widget的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter基础组件插件simple_widget的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


simple_widget 是一个用于 Flutter 的简化 UI 组件库,旨在帮助开发者快速构建常见的 UI 元素。它提供了一些常用的、预定义的组件,可以减少重复代码的编写,提高开发效率。

安装 simple_widget

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

dependencies:
  flutter:
    sdk: flutter
  simple_widget: ^1.0.0  # 请使用最新版本

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

使用 simple_widget

simple_widget 提供了一些常用的组件,例如按钮、文本、卡片等。以下是一些常见组件的使用示例:

1. 简单按钮 (SimpleButton)

SimpleButton 是一个预定义的按钮组件,可以快速创建带有文本和点击事件的按钮。

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Simple Widget Example'),
      ),
      body: Center(
        child: SimpleButton(
          text: 'Click Me',
          onPressed: () {
            print('Button Pressed!');
          },
        ),
      ),
    );
  }
}

2. 简单文本 (SimpleText)

SimpleText 是一个预定义的文本组件,可以快速设置文本样式。

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Simple Widget Example'),
      ),
      body: Center(
        child: SimpleText(
          'Hello, Flutter!',
          style: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
        ),
      ),
    );
  }
}

3. 简单卡片 (SimpleCard)

SimpleCard 是一个预定义的卡片组件,可以快速创建带有阴影和圆角的卡片。

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Simple Widget Example'),
      ),
      body: Center(
        child: SimpleCard(
          child: Padding(
            padding: EdgeInsets.all(16.0),
            child: SimpleText('This is a simple card.'),
          ),
        ),
      ),
    );
  }
}

4. 简单图标按钮 (SimpleIconButton)

SimpleIconButton 是一个预定义的图标按钮组件,可以快速创建带有图标的按钮。

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Simple Widget Example'),
      ),
      body: Center(
        child: SimpleIconButton(
          icon: Icons.favorite,
          onPressed: () {
            print('Icon Button Pressed!');
          },
        ),
      ),
    );
  }
}

自定义样式

simple_widget 的组件通常允许你通过参数来自定义样式。例如,你可以通过 style 参数来自定义文本样式,通过 color 参数来自定义按钮颜色等。

SimpleButton(
  text: 'Custom Button',
  color: Colors.blue,
  textColor: Colors.white,
  onPressed: () {
    print('Custom Button Pressed!');
  },
)
回到顶部