diff --git a/lib/components/search/search_card.dart b/lib/components/search/search_card.dart index 6ea8995..6574ce4 100644 --- a/lib/components/search/search_card.dart +++ b/lib/components/search/search_card.dart @@ -4,36 +4,79 @@ import 'package:unofficial_jisho_api/api.dart'; class SearchResultCard extends StatelessWidget { final JishoResult _result; - const SearchResultCard(this._result); + JishoJapaneseWord _mainWord; + List _otherForms; + + SearchResultCard(this._result) { + this._mainWord = _result.japanese[0]; + this._otherForms = _result.japanese.sublist(1); + } + + @override + Widget build(BuildContext context) { + return ExpansionTile( + title: _JapaneseHeader(_mainWord), + children: [_OtherForms(_otherForms)], + ); + } +} + +class _JapaneseHeader extends StatelessWidget { + final JishoJapaneseWord _word; + const _JapaneseHeader(this._word); @override Widget build(BuildContext context) { return Container( - child: Column( - children: [ - Text(_result.slug), - Text(_result.senses.toString()), - ], - ), - alignment: Alignment.center, - height: 50.0, - margin: EdgeInsets.symmetric( - horizontal: 20.0, - vertical: 20.0, - ), - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(10.0), - color: Colors.white, - boxShadow: [ - BoxShadow( - color: Colors.grey.withOpacity(0.5), - spreadRadius: 2, - blurRadius: 1, - offset: Offset(2, 2), // changes position of shadow - ) - ]), + child: _KanaBox(_word), ); } - } +class _OtherForms extends StatelessWidget { + final List _otherForms; + _OtherForms(this._otherForms); + + @override + Widget build(BuildContext context) { + return Container( + child: Row( + children: _otherForms.map((form) => _KanaBox(form)).toList(), + )); + } +} + +class _KanaBox extends StatelessWidget { + final JishoJapaneseWord _word; + const _KanaBox(this._word); + + @override + Widget build(BuildContext context) { + final hasFurigana = (_word.word != null); + + return Container( + child: Column( + children: [ + (hasFurigana) ? Text(_word.reading) : Text(''), + (hasFurigana) ? Text(_word.word) : Text(_word.reading), + ], + ), + margin: EdgeInsets.symmetric( + horizontal: 5.0, + vertical: 5.0, + ), + padding: EdgeInsets.all(5.0), + decoration: BoxDecoration( + color: Colors.white, + boxShadow: [ + BoxShadow( + color: Colors.grey.withOpacity(0.5), + spreadRadius: 1, + blurRadius: 0.5, + offset: Offset(1, 1), + ), + ], + ), + ); + } +}