Skip to content

Instantly share code, notes, and snippets.

@suragch
Created January 25, 2023 08:34
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suragch/dae21b34acc08641872a29a9e3d5ac28 to your computer and use it in GitHub Desktop.
Save suragch/dae21b34acc08641872a29a9e3d5ac28 to your computer and use it in GitHub Desktop.
Show error message
class HomeScreenManager {
void Function(String message)? onError;
Future<void> trySomething() async {
await Future.delayed(const Duration(milliseconds: 200));
onError?.call('Sorry, there was an error.');
}
}
import 'package:flutter/material.dart';
import 'home_screen_manager.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
const HomeScreen({super.key});
@override
State<HomeScreen> createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final manager = HomeScreenManager();
void _showDialog(String errorMessage) {
final alert = AlertDialog(
content: Text(
errorMessage,
style: const TextStyle(color: Colors.red),
),
);
showDialog(
context: context,
builder: (BuildContext context) {
return alert;
},
);
}
void _showSnackbar(String errorMessage) {
final snackBar = SnackBar(
content: Text(
errorMessage,
style: const TextStyle(color: Colors.red),
),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
@override
void initState() {
super.initState();
// manager.onError = _showDialog;
manager.onError = _showSnackbar;
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: ElevatedButton(
onPressed: manager.trySomething,
child: const Text('Try to do something'),
),
),
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment