Neo Mobile Kit
A mobile-first neobrutalist Flutter UI kit built for fast app prototyping.
It includes:
- Theme tokens and color presets.
- Core neobrutalist widgets.
- Mobile app bar and bottom navigation.
- Orb/moon animated backgrounds.
- Page shell and layout helpers.
- Submit and theme reveal transitions.
Install
From pub.dev:
dependencies:
neo_mobile_kit: ^0.1.2
For local competition practice:
dependencies:
neo_mobile_kit:
path: ../packages/neo_mobile_kit
Basic Usage
import 'package:flutter/material.dart';
import 'package:neo_mobile_kit/neo_mobile_kit.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
theme: NeoTheme.buildTheme(Brightness.light),
darkTheme: NeoTheme.buildTheme(Brightness.dark),
home: const DemoPage(),
);
}
}
class DemoPage extends StatelessWidget {
const DemoPage({super.key});
@override
Widget build(BuildContext context) {
final palette = NeoPalette.of(context);
return NeoPageShell(
background: NeoOrbBackground(specs: buildAuthOrbs(palette)),
child: NeoPanel(
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
const NeoPill(label: 'NEO KIT'),
const SizedBox(height: 16),
NeoButton(
label: 'Comecar',
icon: Icons.arrow_forward_rounded,
onPressed: () {},
),
],
),
),
);
}
}
Offline Preparation
Expressive Onboarding
NeoSplashPage(
logoText: 'WorldSkills',
nextPageBuilder: (onboardingContext) => NeoOnboardingPage(
appName: 'Nome do App',
steps: const [
NeoOnboardingStep(
title: 'Organize dados',
description: 'Gerencie as informacoes principais do app.',
icon: Icons.dashboard_rounded,
),
NeoOnboardingStep(
title: 'Acompanhe indicadores',
description: 'Veja resumo, status e progresso rapidamente.',
icon: Icons.bar_chart_rounded,
),
NeoOnboardingStep(
title: 'Personalize',
description: 'Troque tema, paleta e aparencia quando quiser.',
icon: Icons.tune_rounded,
),
],
onFinish: () {
Navigator.of(onboardingContext).pushReplacement(
MaterialPageRoute(builder: (_) => const WelcomePage()),
);
},
),
)
Before going offline, run:
flutter pub get
flutter pub get --offline
flutter test
If the offline command works, the package and its dependencies are already in the local Pub cache.
Libraries
- core/theme/neo_theme
- core/theme/neo_tokens
- neo_mobile_kit
- shared/animations/neo_animations
- shared/animations/neo_entrance_group
- shared/animations/neo_entrance_types
- shared/animations/neo_fade_slide
- shared/animations/neo_motion_tokens
- shared/animations/neo_panel_drop
- shared/animations/neo_pop
- shared/animations/neo_press_motion
- shared/animations/neo_scroll_reveal
- shared/backgrounds/neo_auth_background
- shared/backgrounds/neo_moon_background
- shared/backgrounds/neo_orb_background
- shared/backgrounds/neo_shell_background
- shared/layout/neo_breakpoints
- shared/layout/neo_page_shell
- shared/layout/neo_section_header
- shared/layout/neo_spacing
- shared/layout/neo_split_layout
- shared/navigation/neo_app_bar
- shared/navigation/neo_orb_reveal_transition
- shared/onboarding/neo_onboarding_page
- shared/splash/neo_splash_config
- shared/splash/neo_splash_controller
- shared/splash/neo_splash_page
- shared/splash/widgets/bubble_wave_layer
- shared/splash/widgets/floating_shape_layer
- shared/splash/widgets/liquid_surface_layer
- shared/splash/widgets/logo_reveal_layer
- shared/splash/widgets/splash_drop_fill
- shared/splash/widgets/splash_scene
- shared/widgets/neo_app_settings_sheet
- shared/widgets/neo_bottom_sheet_card
- shared/widgets/neo_empty_state
- shared/widgets/neo_input_field
- shared/widgets/neo_panel
- shared/widgets/neo_pill
- shared/widgets/neo_search_box
- shared/widgets/neo_theme_toggle
- shared/widgets/neo_window_panel