Getting Started
This guide assumes you have a basic understanding of Flutter and have already set up your development environment. If you’re new to Flutter, you may follow the official installation guide .
Installation
From your Flutter project directory, run the following command to install Forui.
Forui 0.15.0+ requires Flutter 3.35.0+. Run flutter --version to check your Flutter version.
flutter pub add foruiUpgrading
Flutter does not automatically upgrade minor versions of packages prior to 1.0.0.
This means that that following entry in your pubspec.yaml file will not automatically upgrade to 0.15.0:
dependencies:
forui: ^0.15.0 // ❌ will not upgrade to 0.16.0To upgrade to the latest version of Forui, run the following command:
flutter pub upgrade forui --major-versionsForui Icons
Forui Icons is bundled with the forui package. You don’t need to install it separately if you install forui.
If you would like to only use the icons, run the following command from your Flutter project’s directory.
flutter pub add forui_assetsUsage
To use Forui widgets in your Flutter app, import the Forui package and place the
FAnimatedTheme widget underneath
CupertinoApp, MaterialApp, or WidgetsApp at the root of the widget tree.
To generate a basic Forui app structure in your project, run:
dart run forui initOr copy & paste the following code snippet:
import 'package:flutter/material.dart';
import 'package:forui/forui.dart';
void main() {
runApp(const Application());
}
class Application extends StatelessWidget {
const Application({super.key});
@override
Widget build(BuildContext context) {
/// Try changing this and hot reloading the application.
///
/// To create a custom theme:
/// ```shell
/// dart forui theme create [theme template].
/// ```
final theme = FThemes.zinc.dark;
return MaterialApp(
// TODO: replace with your application's supported locales.
supportedLocales: FLocalizations.supportedLocales,
// TODO: add your application's localizations delegates.
localizationsDelegates: const [...FLocalizations.localizationsDelegates],
// MaterialApp's theme is also animated by default with the same duration and curve.
// See https://api.flutter.dev/flutter/material/MaterialApp/themeAnimationStyle.html for how to configure this.
//
// There is a known issue with implicitly animated widgets where their transition occurs AFTER the theme's.
// See https://github.com/forus-labs/forui/issues/670.
theme: theme.toApproximateMaterialTheme(),
builder: (_, child) => FAnimatedTheme(data: theme, child: child!),
// You can also replace FScaffold with Material Scaffold.
home: const FScaffold(
// TODO: replace with your widget.
child: Example(),
),
);
}
}
class Example extends StatefulWidget {
const Example({super.key});
@override
State<Example> createState() => _ExampleState();
}
class _ExampleState extends State<Example> {
int _count = 0;
@override
Widget build(BuildContext context) => Center(
child: Column(
mainAxisSize: MainAxisSize.min,
spacing: 10,
children: [
Text('Count: $_count'),
FButton(
onPress: () => setState(() => _count++),
suffix: const Icon(FIcons.chevronsUp),
child: const Text('Increase'),
),
],
),
);
}
It is perfectly fine to use Cupertino/Material widgets alongside Forui widgets!
import 'package:flutter/cupertino.dart';
import 'package:forui/forui.dart';
void main() {
runApp(const Application());
}
class Application extends StatelessWidget {
const Application({super.key});
Widget build(BuildContext context) => CupertinoApp(
builder: (context, child) => FAnimatedTheme(
data: FThemes.zinc.light,
child: child!,
),
home: FScaffold(...)
);
}Themes
Forui provides a set of predefined themes that you can use out of the box.
In the example above, we used the FThemes.zinc.light theme, which is a light theme variant of the zinc color scheme.
Themes are a very powerful building block in Forui, allowing you to customize the look and feel of your app. To learn more about themes, refer to the Themes page.