Flutter UI组件库插件nomo_ui_kit的使用

发布于 1周前 作者 gougou168 来自 Flutter

Flutter UI组件库插件 nomo_ui_kit 的使用

nomo_ui_kit 是一个专为 Nomo App 开发的Flutter UI组件库,提供了多种可复用的组件,如按钮、卡片等。它具有轻量级、高度可定制和易于扩展的特点。

为什么选择 nomo_ui_kit

与Material UI等其他UI工具包相比,nomo_ui_kit 具有以下优势:

  • 极其轻量:几乎没有运行时依赖,可以轻松集成到任何Web或原生应用中。
  • 高度可定制:虽然该工具包对UI外观有自己的看法,但允许几乎每个细节都进行自定义。
  • 高度可扩展:通过继承Nomo UI小部件,可以适应各种设计语言。

特性

  • 多功能按钮:提供适合不同使用场景的各种按钮,确保一致且精美的外观。
  • 交互式卡片:提升内容展示效果,提供有序且视觉上吸引人的信息展示方式。
  • 带样式的文本元素:增强应用程序的排版,保持整个应用程序界面的一致性和可读性。
  • 直观的对话框:通过直观的对话框与用户互动,确保流畅的交互流程。

示例代码

下面是一个完整的示例,展示了如何在项目中使用 nomo_ui_kit 包括初始化应用和加载Markdown文件的内容。

import 'package:example/routes.dart';
import 'package:example/theme.dart';
import 'package:flutter/material.dart';
import 'package:http/http.dart';
import 'package:markdown_widget/markdown_widget.dart';
import 'package:nomo_router/nomo_router.dart';
import 'package:nomo_router/router/entities/transitions.dart';
import 'package:nomo_ui_kit/app/nomo_app.dart';
import 'package:nomo_ui_kit/components/app/app.dart';
import 'package:nomo_ui_kit/components/app/routebody/nomo_route_body.dart';
import 'package:nomo_ui_kit/theme/nomo_theme.dart';
// ignore: depend_on_referenced_packages
import 'package:flutter_web_plugins/url_strategy.dart';

final appRouter = AppRouter();

final menuItems = appRouter.routeInfos.toMenuRoutes.toMenuItems;

void main() {
  usePathUrlStrategy();
  
  WidgetsFlutterBinding.ensureInitialized();
  
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  
  [@override](/user/override)
  Widget build(BuildContext context) {
    return NomoNavigator(
      delegate: appRouter.delegate,
      defaultTransistion: const PageSharedAxisTransition(type: SharedAxisTransitionType.horizontal),
      child: NomoApp(
        themeDelegate: AppThemeDelegate(),
        color: Colors.red,
        supportedLocales: const [Locale('en', 'US')],
        routerConfig: appRouter.config,
      ),
    );
  }
}

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);
  
  [@override](/user/override)
  Widget build(BuildContext context) {
    final file = get(Uri.parse("https://raw.githubusercontent.com/nomo-app/nomo-ui-kit/main/README.md"),
      headers: {"Accept": "text/plain"})
      .then((value) => value.body);

    return NomoRouteBody(
      builder: (context) => SingleChildScrollView(
        controller: DefaultScrollController.of(context),
        child: FutureBuilder(
          future: file,
          builder: (context, snapshot) {
            if (snapshot.data != null) {
              return MarkdownWidget(
                shrinkWrap: true,
                config: MarkdownConfig(
                  configs: [
                    H1Config(style: context.typography.h1),
                    H2Config(style: context.typography.h2),
                    H3Config(style: context.typography.h3),
                    H4Config(style: context.typography.b3),
                    H5Config(style: context.typography.b2),
                    H6Config(style: context.typography.b1),
                    PConfig(textStyle: context.typography.b1),
                    CodeConfig(style: context.typography.b2),
                    BlockquoteConfig(textColor: context.colors.foreground1),
                  ],
                ),
                data: snapshot.data as String,
              );
            }

            return const Center(child: CircularProgressIndicator());
          },
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用nomo_ui_kit插件的示例代码。nomo_ui_kit是一个假设的UI组件库插件,因此实际使用时需要确保该插件存在于pub.dev或相应的包管理系统中。如果插件不存在,代码将作为一个假设示例。

首先,确保在pubspec.yaml文件中添加nomo_ui_kit依赖:

dependencies:
  flutter:
    sdk: flutter
  nomo_ui_kit: ^最新版本号  # 请替换为实际版本号

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

接下来,在你的Flutter项目中导入并使用nomo_ui_kit提供的组件。以下是一个简单的示例,展示如何使用nomo_ui_kit中的按钮和卡片组件:

import 'package:flutter/material.dart';
import 'package:nomo_ui_kit/nomo_ui_kit.dart';  // 假设的包导入路径

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Nomo UI Kit Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HomeScreen(),
    );
  }
}

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Nomo UI Kit Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 使用Nomo UI Kit中的按钮组件
            NomoButton(
              text: 'Click Me',
              onPressed: () {
                // 按钮点击事件处理
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Button Clicked!')),
                );
              },
            ),
            SizedBox(height: 20),
            // 使用Nomo UI Kit中的卡片组件
            NomoCard(
              title: 'Card Title',
              subtitle: 'This is a subtitle',
              child: Container(
                height: 100,
                color: Colors.grey[200],
                child: Center(child: Text('Card Content')),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

在上面的代码中:

  1. NomoButton 是一个假设的按钮组件。
  2. NomoCard 是一个假设的卡片组件。

这些组件的属性和行为会根据nomo_ui_kit插件的实际实现而有所不同。因此,在实际使用时,请查阅该插件的文档以获取详细的API说明和示例。

注意:由于nomo_ui_kit是一个假设的插件名称,实际使用时请替换为真实存在的UI组件库插件名称和相应的包导入路径。如果插件不存在,你可能需要选择一个真实可用的Flutter UI组件库插件,并按照其文档进行集成和使用。

回到顶部