flutter_gutter 2.1.0 flutter_gutter: ^2.1.0 copied to clipboard
Get your UI out of the gutter! Ensure all visual gaps between your widgets are consistent, adapted to the axis direction, and respond to screen size.
import 'package:flutter/material.dart';
import 'package:flutter_gutter/flutter_gutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({super.key, required this.title});
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
// Get the margin size from context and pad the page contents by it.
body: Padding(
padding: EdgeInsets.all(context.margin),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text('Button tapped'),
const GutterSmall(),
Text(
_counter.toString(),
style: Theme.of(context).textTheme.displayMedium,
),
const Gutter(),
const Text('times'),
const Gap(size: 60),
const Text('test'),
],
),
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
);
}
}