import 'package:flutter/material.dart'; import 'package:preferences/preferences.dart'; import 'package:provider/provider.dart'; import 'package:toolheim/data/github_adapter.dart'; // TODO: Display possible errors here class SettingsScreen extends StatelessWidget { @override Widget build(BuildContext context) { GitHubAdapter github = Provider.of(context); return Scaffold( appBar: AppBar(title: Text('Settings')), body: PreferencePage([ PreferenceTitle('GitHub'), PreferenceText( 'Provide a valid GitHub repository with username and project (username/repository-name). This repository must contain warband roster files in subfolders. See the sample project for a kickstart.'), TextFieldPreference('Repository', 'repository'), PreferenceText( 'If your warband folders are placed in a subfolder, you can specify it here.'), TextFieldPreference('Path', 'path', defaultVal: '/'), PreferenceTitle('Search for Warbands'), PreferenceText( 'Search the given GitHub repository for valid Warband files (ending with .warband.yml). This step can be done at any time.'), FlatButton( onPressed: () { github.search(); showDialog( context: context, builder: (BuildContext context) { return AlertDialog( title: Text('Search Warbands ...'), content: Column( mainAxisSize: MainAxisSize.min, children: [ Text( 'Checking the GitHub repository for suitable files. This can take a while.'), SizedBox( height: 50, ), Visibility( child: CircularProgressIndicator(), visible: github.isSyncInProgress), Visibility( child: buildSyncErrors(context), visible: github.syncErrors.length > 0, ) ]), actions: [ Visibility( visible: !github.isSyncInProgress, child: FlatButton( child: Text('Close', style: TextStyle(color: Colors.blue)), onPressed: () { if (github.syncErrors.length > 0) { Navigator.pop(context); } else { Navigator.popAndPushNamed(context, '/'); } }, ), ) ]); }); }, child: Text('Start search', style: TextStyle(color: Colors.blue))), ])); //String _repository = 'Labernator/Mordheim'; //String _path = 'Mordheim-BorderTownBurning/Warband Rosters'; } Widget buildSyncErrors(BuildContext context) { List syncErrors = new List(); GitHubAdapter github = Provider.of(context); // TODO: Make it pretty github.syncErrors.forEach((error) { syncErrors.add(Text(error, style: TextStyle(color: Colors.red))); }); return Column(children: syncErrors); } }