import 'package:comunic/helpers/server_config_helper.dart'; import 'package:comunic/models/server_config.dart'; import 'package:comunic/utils/intl_utils.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; bool _bannerDismissed = false; class BannerWidget extends StatefulWidget { const BannerWidget({Key key}) : super(key: key); @override _BannerWidgetState createState() => _BannerWidgetState(); } class _BannerWidgetState extends State { void _hideBanner() { setState(() => _bannerDismissed = true); } void _openLink() { launch(srvConfig.banner.link); } @override Widget build(BuildContext context) { if (!showBanner || _bannerDismissed) return Container(); final banner = srvConfig.banner; return Card( color: banner.nature == BannerNature.Information ? Colors.blue : banner.nature == BannerNature.Success ? Colors.green : Colors.red, child: Padding( padding: const EdgeInsets.all(2.0), child: Row( children: [ BannerButton( icon: Icon( banner.nature == BannerNature.Information ? Icons.info : banner.nature == BannerNature.Success ? Icons.check : Icons.warning, ), ), Flexible( child: Text( banner.message.containsKey(lang()) ? banner.message[lang()] : banner.message["en"], style: TextStyle(color: Colors.white), ), ), banner.link == null ? Container() : BannerButton( onPressed: _openLink, icon: Icon(Icons.open_in_new), ), BannerButton( onPressed: _hideBanner, icon: Icon(Icons.close), ) ], ), ), ); } } class BannerButton extends StatelessWidget { final Function() onPressed; final Widget icon; const BannerButton({this.onPressed, this.icon, Key key}) : super(key: key); @override Widget build(BuildContext context) { return IconButton( onPressed: onPressed, icon: icon, disabledColor: Colors.white, padding: EdgeInsets.all(1.0), ); } }