Flutter高级UI组件插件super_material的使用

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

示例动图

drawing drawing

支持的组件

小部件

该包支持基本的小部件,如 MaterialAppScaffoldAppBarElevatedButtonTextFieldListTile

函数

还支持函数,例如 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/'

开始使用

  1. 在您的应用中添加此包。
  2. 修改 runApp 和主应用程序类,以启用运行时设计切换功能。
  3. material 导入替换为 super_material 导入。
  4. 替换小部件/函数(仅限非覆盖接口)。

使用方法

标准接口

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));
}
1 回复

更多关于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(),
    );
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!