Skip to content

Instantly share code, notes, and snippets.

@rei-codes
rei-codes / main.dart
Created June 8, 2023 11:24
mediaquery on dartpad
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: HomePage(),
);
@rei-codes
rei-codes / details_page.dart
Created May 13, 2023 13:55
MediaQuery as an InheritedWidget
class DetailsPage extends StatelessWidget {
const DetailsPage({super.key});
@override
Widget build(BuildContext context) {
log('DetailsPage');
return Scaffold(
appBar: AppBar(),
body: const Center(
child: Padding(
@rei-codes
rei-codes / home_page.dart
Last active June 1, 2023 07:57
MediaQuery as an InheritedModel
class HomePage extends StatelessWidget {
const HomePage({super.key});
@override
Widget build(BuildContext context) {
log('HomePage');
return Scaffold(
appBar: AppBar(),
body: Center(
child: Text(
@rei-codes
rei-codes / ensure_test_field_visible.dart
Created April 30, 2023 20:15
Ensures the widget is visible
class EnsureTextFieldVisible extends StatelessWidget {
const EnsureTextFieldVisible({super.key});
@override
Widget build(BuildContext context) {
// for validation
final key = GlobalKey();
// to learn the position of the widget
final formKey = GlobalKey<FormState>();
return Scaffold(
@rei-codes
rei-codes / unfocus_on_tap_outside.dart
Created April 28, 2023 14:25
Unfocus on tap outside
class UnfocusArea extends StatelessWidget {
const UnfocusArea({super.key, required this.child});
final Widget child;
@override
Widget build(BuildContext context) {
return GestureDetector(
// Makes clickable on everywhere even if the widget is not opaque
behavior: HitTestBehavior.opaque,
// Magic happens here
@rei-codes
rei-codes / unfocus_on_scroll.dart
Created April 28, 2023 14:25
Unfocus on scroll
class UnfocusOnScroll extends StatelessWidget {
const UnfocusOnScroll({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Unfocus on scroll'),
bottom: const PreferredSize(
preferredSize: Size.fromHeight(60),
@rei-codes
rei-codes / tap_again_to_exit.dart
Created April 28, 2023 14:25
Tap again to exit
class DoubleBack extends StatefulWidget {
const DoubleBack({super.key, required this.child});
final Widget child;
@override
State<DoubleBack> createState() => _DoubleBackState();
}
class _DoubleBackState extends State<DoubleBack> {
DateTime? pressedTime;
@rei-codes
rei-codes / remember_scroll_position.dart
Created April 28, 2023 14:24
Remeber scroll position
class RememberScrollPosition extends StatefulWidget {
const RememberScrollPosition({super.key});
@override
State<RememberScrollPosition> createState() => _RememberScrollPositionState();
}
class _RememberScrollPositionState extends State<RememberScrollPosition> {
int currentIndex = 0;
@rei-codes
rei-codes / next_focus_on_enter.dart
Created April 28, 2023 14:23
Next focus on enter
class NextFocusOnEnter extends StatelessWidget {
const NextFocusOnEnter({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Next focus on enter'),
),
body: Column(
@rei-codes
rei-codes / auto_focus_on_open.dart
Created April 28, 2023 14:22
Auto focus on open
class AutoFocusOnOpen extends StatelessWidget {
const AutoFocusOnOpen({super.key});
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('Auto focus on open'),
),
body: const Center(