| // Copyright 2015 The Vanadium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| import 'package:flutter/material.dart'; |
| |
| import '../stores/store.dart'; |
| import 'syncslides_page.dart'; |
| |
| class AskQuestionPage extends SyncSlidesPage { |
| final String _deckId; |
| final int _currSlideNum; |
| |
| AskQuestionPage(this._deckId, this._currSlideNum); |
| |
| @override |
| Widget build(BuildContext context, AppState appState, AppActions appActions) { |
| if (!appState.decks.containsKey(_deckId)) { |
| // TODO(aghassemi): Proper error page with navigation back to main view. |
| return new Text('Deck no longer exists.'); |
| } |
| var deckState = appState.decks[_deckId]; |
| var presentationState = deckState.presentation; |
| if (presentationState == null) { |
| // TODO(aghassemi): Proper error page with navigation back to main view. |
| return new Text('Not in a presentation.'); |
| } |
| |
| // TODO(aghassemi): Switch to multi-line input when support is added. |
| // https://github.com/flutter/flutter/issues/627 |
| var input = new Input( |
| labelText: 'Your question', |
| autofocus: true, |
| onSubmitted: (InputValue questionText) async { |
| await appActions.askQuestion( |
| deckState.deck.key, _currSlideNum, questionText.text); |
| |
| // TODO(aghassemi): Add a 'Question submitted.' toast on the parent page. |
| // Blocked on https://github.com/flutter/flutter/issues/608 |
| Navigator.pop(context); |
| }); |
| |
| var view = new Row( |
| children: [input], crossAxisAlignment: CrossAxisAlignment.stretch); |
| |
| return new Scaffold( |
| appBar: new AppBar( |
| leading: new IconButton( |
| icon: Icons.arrow_back, |
| onPressed: () => Navigator.pop(context)), |
| title: new Text('Ask a question')), |
| body: new Material(child: view)); |
| } |
| } |