Flutter高级UI组件插件super_material的使用
super_material
提供了组件包装器和有用的接口,可以将现有的 Flutter 应用程序转换为可以在运行时切换设计的应用程序。这意味着您的应用程序可以从单一代码库中显示不同的设计。


支持的组件
小部件
该包支持基本的小部件,如 MaterialApp
、Scaffold
、AppBar
、ElevatedButton
、TextField
和 ListTile
。
函数
还支持函数,例如 showDialog
。
提供的接口
标准接口
- super_material: 提供超级材料组件包装器。能够在运行时更改设计。
- material_only: 与 super_material 相同,但强制使用 Material 设计。(非官方)
- cupertino_only: 与 super_material 相同,但强制使用 Cupertino 设计。(非官方)
覆盖层接口
- super_material_overlay: 提供超级材料组件,但名称与真实 Material 组件相同。能够在运行时更改设计。
- material_only_overlay: 与 super_material_overlay 相同,但强制使用 Material 设计。(非官方)
- cupertino_only_overlay: 与 super_material_overlay 相同,但强制使用 Cupertino 设计。(非官方)
注意: 非官方接口位于 'package:super_material/src/api/'
。
开始使用
- 在您的应用中添加此包。
- 修改
runApp
和主应用程序类,以启用运行时设计切换功能。 - 将
material
导入替换为super_material
导入。 - 替换小部件/函数(仅限非覆盖接口)。
使用方法
标准接口
import 'package:super_material/super_material.dart';
void main() {
runSuperMaterialApp(ExampleApp.getApp, const SuperController());
}
class ExampleApp extends SuperApp {
ExampleApp({Key? key}) : super(key: key);
static ExampleApp getApp() => ExampleApp();
@override
Widget build(BuildContext context) => SuperMaterialApp(
theme: SuperMaterialThemeData(),
home: const MainPage(),
);
}
覆盖层接口
import 'package:super_material/super_material_overlay.dart';
void main() {
runApp(ExampleApp.getApp, const SuperController());
}
class ExampleApp extends SuperApp {
ExampleApp({Key? key}) : super(key: key);
static ExampleApp getApp() => ExampleApp();
@override
Widget build(BuildContext context) => MaterialApp(
theme: ThemeData(),
home: const MainPage(),
);
}
注意事项
在开发过程中使用 devMode
,以确保热重载功能正常工作。否则热重载会一直重启您的应用。
class ExampleApp extends SuperApp {
ExampleApp({Key? key}) : super(key: key, devMode: true);
...
}
设计切换
通过 SuperInstance.restartApp
切换设计,这将触发整个应用程序小部件的全新构建。
切换操作
ListTile(
title: const Text('Switch to material'),
subtitle: const Text('Tap to switch ...'),
onTap: () => SuperInstance.restartApp(SuperMaterialMode.material),
),
ListTile(
title: const Text('Switch to cupertino'),
subtitle: const Text('Tap to switch ...'),
onTap: () => SuperInstance.restartApp(SuperMaterialMode.cupertino),
),
默认设计
SuperController
可以接受一个参数来指定默认设计。
void main() {
runApp(ExampleApp.getApp, const SuperController(SuperMaterialMode.cupertino));
}
更多关于Flutter高级UI组件插件super_material的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
super_material
是一个 Flutter 插件,旨在提供更高级的 Material Design 组件和功能,以增强 Flutter 应用的 UI 体验。它通常包含一些 Flutter 官方 Material 组件库中没有的组件或功能,或者是对现有组件的扩展和优化。
安装 super_material
首先,你需要在 pubspec.yaml
文件中添加 super_material
依赖:
dependencies:
flutter:
sdk: flutter
super_material: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
使用 super_material
super_material
提供了多种高级 Material 组件,以下是一些常见的使用示例:
1. SuperAppBar
SuperAppBar
是一个增强版的 AppBar
,提供了更多的自定义选项。
import 'package:flutter/material.dart';
import 'package:super_material/super_material.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: SuperAppBar(
title: Text('Super AppBar'),
actions: [
IconButton(
icon: Icon(Icons.search),
onPressed: () {},
),
],
backgroundColor: Colors.blue,
elevation: 4.0,
),
body: Center(
child: Text('Hello, Super Material!'),
),
);
}
}
2. SuperButton
SuperButton
是一个增强版的按钮组件,支持更多的样式和动画效果。
import 'package:flutter/material.dart';
import 'package:super_material/super_material.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SuperButton(
onPressed: () {
print('Button Pressed!');
},
child: Text('Super Button'),
color: Colors.blue,
elevation: 2.0,
borderRadius: BorderRadius.circular(8.0),
),
),
);
}
}
3. SuperCard
SuperCard
是一个增强版的 Card
组件,支持更多的自定义选项和动画效果。
import 'package:flutter/material.dart';
import 'package:super_material/super_material.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SuperCard(
elevation: 4.0,
borderRadius: BorderRadius.circular(12.0),
child: Padding(
padding: EdgeInsets.all(16.0),
child: Text('Super Card Content'),
),
),
),
);
}
}
4. SuperDialog
SuperDialog
是一个增强版的对话框组件,支持更多的自定义选项和动画效果。
import 'package:flutter/material.dart';
import 'package:super_material/super_material.dart';
class MyHomePage extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: SuperButton(
onPressed: () {
showDialog(
context: context,
builder: (context) => SuperDialog(
title: Text('Super Dialog'),
content: Text('This is a super dialog!'),
actions: [
SuperButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('Close'),
),
],
),
);
},
child: Text('Show Super Dialog'),
),
),
);
}
}
自定义主题
super_material
还支持自定义主题,你可以通过 SuperTheme
来定义全局的主题样式。
import 'package:flutter/material.dart';
import 'package:super_material/super_material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Super Material Demo',
theme: SuperTheme(
primaryColor: Colors.blue,
accentColor: Colors.orange,
textTheme: TextTheme(
headline1: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
),
),
home: MyHomePage(),
);
}
}