import 'package:cached_network_image/cached_network_image.dart'; import 'package:flutter/material.dart'; /// User interface utilities /// Build centered progress bar Widget buildCenteredProgressBar() { return Center( child: CircularProgressIndicator(), ); } /// Build and return a full loading page Widget buildLoadingPage() { return Scaffold( body: buildCenteredProgressBar(), ); } /// Build and return an error card Widget buildErrorCard(String message, {List actions}) { return Card( elevation: 2.0, color: Colors.red, child: Padding( padding: const EdgeInsets.all(8.0), child: Row( children: [ Padding( padding: const EdgeInsets.only(right: 8.0), child: Icon( Icons.error, color: Colors.white, ), ), Flexible( child: Text( message, style: TextStyle(color: Colors.white), maxLines: null, ), ), Row( children: actions == null ? [] : actions, ) ], ), ), ); } /// Show an image with a given [url] in full screen void showImageFullScreen(BuildContext context, String url) { Navigator.of(context).push(MaterialPageRoute(builder: (c) { // TODO : add better support later return CachedNetworkImage( imageUrl: url, ); })); } /// Show simple snack void showSimpleSnack(BuildContext context, String message) { Scaffold.of(context).showSnackBar(SnackBar(content: Text(message))); }