Flutter图标与UI组件插件neo_flutterism的使用

NEOFlutterism #

使用 Neobrutalism 风格的 Flutter UI 组件

此视频 启发

example/lib/main.dart

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

import ‘pages/expenses_tracker_page.dart’; import ‘pages/personal_site_page.dart’;

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

//FIXME: 白色边框交界处有奇怪的空白。 class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key);

// 这个小部件是你应用程序的根。 @override Widget build(BuildContext context) { return MaterialApp( title: ‘Neobrutalism 测试’, debugShowCheckedModeBanner: false, theme: neoThemeData(), // 使用 neo_flutterism 插件的主题数据 initialRoute: ‘/’, routes: { ‘/’: (_) => _HomePage( items: [ HomeItem( ‘个人网站’, route: ‘/personal-site’, ), HomeItem( ‘费用跟踪器’, route: ‘/expenses-tracker’, ), ], ), ‘/personal-site’: () => const PersonalSitePage(), ‘/expenses-tracker’: () => const ExpensesTrackerPage(), }, ); } }

class _HomeItem { final String name; final String route;

_HomeItem( this.name, { required this.route, }); }

class _HomePage extends StatelessWidget { const _HomePage({ Key? key, required this.items, }) : super(key: key);

final List<_HomeItem> items;

@override Widget build(BuildContext context) { return Scaffold( body: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const Padding( padding: EdgeInsets.all(16), child: Text( ‘示例’, style: TextStyle( fontWeight: FontWeight.w800, fontSize: 24, ), ), ), const Divider(thickness: 2), ListView.builder( shrinkWrap: true, itemCount: items.length, itemBuilder: (context, index) { return _HomeListTile( data: items[index], ); }, ), ], ), ); } }

class _HomeListTile extends StatelessWidget { const _HomeListTile({ Key? key, required this.data, }) : super(key: key);

final _HomeItem data;

@override Widget build(BuildContext context) { return ListTile( title: Text( data.name, style: const TextStyle( fontWeight: FontWeight.w600, fontSize: 20, ), ), onTap: () { Navigator.of(context).pushNamed(data.route); }, ); } }


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

1 回复

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


neo_flutterism 是一个为Flutter开发者提供的图标和UI组件库,旨在简化应用程序的UI设计和开发。它提供了丰富的图标集和预构建的UI组件,帮助开发者快速构建美观且功能丰富的应用程序。

以下是如何在Flutter项目中使用 neo_flutterism 的基本步骤:

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 neo_flutterism 依赖:

dependencies:
  flutter:
    sdk: flutter
  neo_flutterism: ^1.0.0  # 请确保使用最新版本

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

2. 导入包

在你的Dart文件中导入 neo_flutterism

import 'package:neo_flutterism/neo_flutterism.dart';

3. 使用图标

neo_flutterism 提供了多种图标,你可以直接在项目中使用。例如:

Icon(NeoIcons.heart),
Icon(NeoIcons.star),

4. 使用UI组件

neo_flutterism 还提供了一些预构建的UI组件,例如按钮、卡片、对话框等。你可以根据需要直接使用这些组件。例如:

NeoButton(
  onPressed: () {
    // 处理点击事件
  },
  child: Text('Click Me'),
),

5. 自定义主题

你可以通过自定义主题来调整 neo_flutterism 组件的外观。例如:

MaterialApp(
  theme: ThemeData(
    primarySwatch: Colors.blue,
    appBarTheme: AppBarTheme(
      backgroundColor: Colors.blue,
    ),
  ),
  home: MyHomePage(),
);

6. 示例代码

以下是一个简单的示例,展示了如何在Flutter应用中使用 neo_flutterism 的图标和按钮:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Neo Flutterism Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Neo Flutterism Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Icon(NeoIcons.heart, size: 50, color: Colors.red),
            SizedBox(height: 20),
            NeoButton(
              onPressed: () {
                // 处理点击事件
              },
              child: Text('Click Me'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部