toolheim/mobile-app/lib/screens/settings_screen.dart

88 lines
3.7 KiB
Dart

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<GitHubAdapter>(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: <Widget>[
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: <Widget>[
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<Widget> syncErrors = new List();
GitHubAdapter github = Provider.of<GitHubAdapter>(context);
// TODO: Make it pretty
github.syncErrors.forEach((error) {
syncErrors.add(Text(error, style: TextStyle(color: Colors.red)));
});
return Column(children: syncErrors);
}
}