import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:badges/badges.dart'; import 'package:toolheim/data/github_adapter.dart'; import 'package:toolheim/data/warband_roaster.dart'; class WarbandDrawerWidget extends StatelessWidget { @override Widget build(BuildContext context) { GitHubAdapter github = Provider.of(context); WarbandRoaster activeRoaster = github.activeRoaster(); if (activeRoaster == null) { // Add search button return Padding( padding: const EdgeInsets.only(top: 100, left: 30, right: 30), child: Column(children: [ Text( 'There is no repository set up. Please open the settings and provide a valid GitHub repository.'), FlatButton( onPressed: () { Navigator.popAndPushNamed(context, '/settings'); }, child: Text( 'Open Settings', style: TextStyle(color: Colors.blue), ), ), ]), ); } List roasters = github.roasters; List tiles = new List(); // Show some stats for the own warband tiles.add(UserAccountsDrawerHeader( otherAccountsPictures: [ IconButton( icon: Icon(Icons.refresh), color: Colors.white, highlightColor: Colors.brown, tooltip: 'Refresh warbands', onPressed: github.update, ), IconButton( icon: Icon(Icons.search), color: Colors.white, tooltip: 'Read warbands', onPressed: github.search, ), IconButton( icon: Icon(Icons.settings), color: Colors.white, highlightColor: Colors.brown, onPressed: () { Navigator.popAndPushNamed(context, '/settings'); }, ), ], accountName: Text(activeRoaster.name), accountEmail: Text(activeRoaster.race), )); // TODO: Order Players on CP or rating roasters.forEach((roaster) { // We mark inactive warbands with a gray acent var textColor = Colors.black; if (!roaster.active) { textColor = Colors.black45; } tiles.add(ListTile( onTap: () { github.changeActiveRoaster(roaster.playerName); Navigator.of(context).pop(); }, title: Text(roaster.name + ' (' + roaster.playerName + ')', style: TextStyle(color: textColor)), subtitle: Text(roaster.currentVersion.message), isThreeLine: true, trailing: Badge( badgeColor: Colors.black12, shape: BadgeShape.square, borderRadius: 2, badgeContent: Text(roaster.campaignPoints.toString() + ' CP', style: TextStyle(color: Colors.white)), ), )); }); tiles.add(Divider()); return Column(children: tiles); } }