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

创建一个带有 Flutter 小部件的时间线原生小部件!
截图
iOS
![]() |
![]() |
Android
![]() |
![]() |
使用此插件的应用
您可以查看以下应用以了解如何使用此插件:
工作原理

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

您需要将小部件转换为图像,然后将其转换为 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
更多关于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!');
},
)