Flutter UI框架插件queen的使用

Flutter UI框架插件queen的使用

简介

queen 是一个用于简化 Flutter 应用开发的 UI 框架插件。它提供了丰富的组件和工具,帮助开发者快速构建美观且功能强大的用户界面。

安装

首先,在 pubspec.yaml 文件中添加 queen 依赖:

dependencies:
  queen: ^x.y.z

然后运行 flutter pub get 来获取该依赖。

基本使用

以下是一个简单的示例,展示了如何使用 queen 构建一个基本的应用。

示例代码
// 导入必要的库
import 'package:flutter/material.dart';
import 'package:queen/queen.dart';
import 'package:queen_example/config/theme.dart';
import 'package:flutter_localizations/flutter_localizations.dart';

import 'pages/theme_page.dart';

Future<void> main() async {
  // 初始化 Flutter 绑定
  WidgetsFlutterBinding.ensureInitialized();
  
  // 启动应用并设置主题和语言配置
  await App.boot(
    themeConfig: AppThemeConfig(),
    nationsConfig: const LangConfig(),
  );

  // 运行应用
  runApp(
    QueenBuilder(
      enableDevtools: false,
      builder: (context) {
        return const MyApp();
      },
    ),
  );
}

// 主应用类
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: AppTheme.current,
      locale: AppLang.current,
      supportedLocales: AppLang.supportedLocales,
      localizationsDelegates: const [
        GlobalCupertinoLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate,
      ],
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

// 主页面类
class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

// 主页面状态类
class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(Locators.find<TransController>().locale.toString()),
            const Text(
              '你已经按下了按钮这么多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
            OutlinedButton(
              onPressed: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(builder: (_) => const ThemePage()),
                );
              },
              child: const Text('主题切换'),
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '增加计数',
        child: const Icon(Icons.add),
      ),
    );
  }
}

详细说明

  1. 初始化

    Future<void> main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await App.boot(
        themeConfig: AppThemeConfig(),
        nationsConfig: const LangConfig(),
      );
      runApp(
        QueenBuilder(
          enableDevtools: false,
          builder: (context) {
            return const MyApp();
          },
        ),
      );
    }
    

    main() 函数中,我们首先确保 Flutter 绑定已初始化,并通过 App.boot() 方法加载应用的主题和语言配置。

  2. 应用入口

    class MyApp extends StatelessWidget {
      const MyApp({Key? key}) : super(key: key);
    
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: AppTheme.current,
          locale: AppLang.current,
          supportedLocales: AppLang.supportedLocales,
          localizationsDelegates: const [
            GlobalCupertinoLocalizations.delegate,
            GlobalMaterialLocalizations.delegate,
            GlobalWidgetsLocalizations.delegate,
          ],
          home: const MyHomePage(title: 'Flutter Demo Home Page'),
        );
      }
    }
    

    MyApp 类定义了应用的基本结构,包括标题、主题、本地化信息和初始页面。

  3. 主页面

    class MyHomePage extends StatefulWidget {
      const MyHomePage({Key? key, required this.title}) : super(key: key);
    
      final String title;
    
      @override
      State<MyHomePage> createState() => _MyHomePageState();
    }
    
    class _MyHomePageState extends State<MyHomePage> {
      int _counter = 0;
    
      void _incrementCounter() {
        setState(() {
          _counter++;
        });
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text(widget.title),
          ),
          body: Center(
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Text(Locators.find<TransController>().locale.toString()),
                const Text(
                  '你已经按下了按钮这么多次:',
                ),
                Text(
                  '$_counter',
                  style: Theme.of(context).textTheme.headline4,
                ),
                OutlinedButton(
                  onPressed: () {
                    Navigator.push(
                      context,
                      MaterialPageRoute(builder: (_) => const ThemePage()),
                    );
                  },
                  child: const Text('主题切换'),
                ),
              ],
            ),
          ),
          floatingActionButton: FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: '增加计数',
            child: const Icon(Icons.add),
          ),
        );
      }
    }
    

更多关于Flutter UI框架插件queen的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


Queen 是一个用于 Flutter 的 UI 框架插件,旨在简化开发过程,提供一套预定义的组件和工具,帮助开发者快速构建美观且功能丰富的应用程序。以下是如何使用 Queen 插件的基本指南:

1. 安装 Queen 插件

首先,你需要在 pubspec.yaml 文件中添加 Queen 插件的依赖项。

dependencies:
  flutter:
    sdk: flutter
  queen: ^1.0.0  # 请根据最新版本号进行替换

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

2. 导入 Queen 插件

在你的 Dart 文件中导入 Queen 插件:

import 'package:queen/queen.dart';

3. 使用 Queen 组件

Queen 提供了许多预定义的组件,例如按钮、卡片、对话框等。你可以直接使用这些组件来构建你的 UI。

示例:使用 QueenButton

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Queen Example'),
      ),
      body: Center(
        child: QueenButton(
          onPressed: () {
            print('Button Pressed!');
          },
          child: Text('Press Me'),
        ),
      ),
    );
  }
}

示例:使用 QueenCard

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Queen Example'),
      ),
      body: Center(
        child: QueenCard(
          child: Padding(
            padding: const EdgeInsets.all(16.0),
            child: Text('This is a Queen Card'),
          ),
        ),
      ),
    );
  }
}

4. 使用 Queen 工具

Queen 还提供了一些工具函数,例如 QueenDialog 用于显示对话框,QueenSnackbar 用于显示 Snackbar 等。

示例:使用 QueenDialog

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Queen Example'),
      ),
      body: Center(
        child: QueenButton(
          onPressed: () {
            QueenDialog.show(
              context,
              title: 'Dialog Title',
              content: 'This is a Queen Dialog.',
              actions: [
                QueenDialogAction(
                  text: 'Close',
                  onPressed: () {
                    Navigator.of(context).pop();
                  },
                ),
              ],
            );
          },
          child: Text('Show Dialog'),
        ),
      ),
    );
  }
}

示例:使用 QueenSnackbar

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

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Queen Example'),
      ),
      body: Center(
        child: QueenButton(
          onPressed: () {
            QueenSnackbar.show(
              context,
              message: 'This is a Queen Snackbar',
            );
          },
          child: Text('Show Snackbar'),
        ),
      ),
    );
  }
}

5. 自定义主题

Queen 允许你自定义主题,以适应你的应用程序的设计风格。你可以在 MaterialApp 中使用 QueenTheme 来定义主题。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Queen Example',
      theme: QueenTheme.light(),  // 使用 `Queen` 的默认亮色主题
      home: MyHomePage(),
    );
  }
}

你也可以自定义主题:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Queen Example',
      theme: QueenTheme(
        primaryColor: Colors.blue,
        accentColor: Colors.orange,
        textTheme: TextTheme(
          headline1: TextStyle(fontSize: 24, fontWeight: FontWeight.bold),
          bodyText1: TextStyle(fontSize: 16),
        ),
      ),
      home: MyHomePage(),
    );
  }
}
回到顶部