import 'package:flutter/material.dart'; import 'package:preferences/preferences.dart'; import 'package:provider/provider.dart'; import 'package:toolheim/data/github_adapter.dart'; 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, ), if (github.isSyncInProgress) CircularProgressIndicator(), if (github.syncErrors.length > 0) buildSyncErrors(context), ]), actions: [ if (!github.isSyncInProgress) 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'; } static Widget buildSyncErrors(BuildContext context) { GitHubAdapter github = Provider.of(context); return Column(children: [ for (var error in github.syncErrors) Text(error, style: TextStyle(color: Colors.red)) ]); } }