neo_mobile_kit 0.1.2
neo_mobile_kit: ^0.1.2 copied to clipboard
A mobile-first neobrutalist Flutter UI kit with theme tokens, widgets, navigation, backgrounds, and motion helpers.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:neo_mobile_kit/neo_mobile_kit.dart';
void main() {
runApp(const NeoMobileKitExample());
}
class NeoMobileKitExample extends StatelessWidget {
const NeoMobileKitExample({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: NeoTheme.buildTheme(Brightness.light),
darkTheme: NeoTheme.buildTheme(Brightness.dark),
home: NeoSplashPage(
logoText: 'WorldSkills',
nextPageBuilder: (_) => const ExampleOnboardingPage(),
),
);
}
}
class ExampleOnboardingPage extends StatelessWidget {
const ExampleOnboardingPage({super.key});
@override
Widget build(BuildContext context) {
return NeoOnboardingPage(
appName: 'School Lab',
steps: const [
NeoOnboardingStep(
title: 'Organize dados',
description: 'Gerencie alunos, turmas, salas e informacoes principais em poucos toques.',
icon: Icons.dashboard_rounded,
),
NeoOnboardingStep(
title: 'Acompanhe indicadores',
description: 'Veja notas, presencas e resumos importantes com uma leitura rapida.',
icon: Icons.bar_chart_rounded,
),
NeoOnboardingStep(
title: 'Personalize tudo',
description: 'Troque tema, paleta e aparencia para adaptar o app ao briefing.',
icon: Icons.tune_rounded,
),
],
onFinish: () {
Navigator.of(context).pushReplacement(
MaterialPageRoute(builder: (_) => const ExampleHomePage()),
);
},
);
}
}
class ExampleHomePage extends StatelessWidget {
const ExampleHomePage({super.key});
@override
Widget build(BuildContext context) {
final palette = NeoPalette.of(context);
return NeoPageShell(
background: NeoOrbBackground(specs: buildAuthOrbs(palette)),
alignment: Alignment.center,
child: NeoPanel(
color: palette.surface,
shadowColor: palette.shadowStrong,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const NeoPill(label: 'NEO MOBILE KIT'),
const SizedBox(height: 18),
Text(
'Onboarding finalizado',
style: Theme.of(context).textTheme.headlineMedium?.copyWith(
color: palette.textPrimary,
fontWeight: FontWeight.w900,
),
),
const SizedBox(height: 18),
NeoButton(
label: 'Ver novamente',
icon: Icons.replay_rounded,
onPressed: () {
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (_) => const ExampleOnboardingPage(),
),
);
},
),
],
),
),
);
}
}