Jisho-Study-Tool/lib/view/components/kanji/kanji_result_body.dart

98 lines
3.3 KiB
Dart
Raw Normal View History

2020-07-11 13:33:31 +02:00
import 'package:flutter/material.dart';
import 'package:unofficial_jisho_api/api.dart' as jisho;
import './kanji_result_body/examples.dart';
import './kanji_result_body/grade.dart';
import './kanji_result_body/header.dart';
import './kanji_result_body/jlpt_level.dart';
import './kanji_result_body/radical.dart';
import './kanji_result_body/rank.dart';
import './kanji_result_body/stroke_order_gif.dart';
import './kanji_result_body/yomi_chips.dart';
2020-07-11 13:33:31 +02:00
class KanjiResultBody extends StatelessWidget {
2021-07-26 21:39:17 +02:00
late final String query;
late final jisho.KanjiResultData resultData;
2020-07-11 13:33:31 +02:00
KanjiResultBody({required jisho.KanjiResult result}) {
2021-08-08 23:16:54 +02:00
query = result.query;
// TODO: Handle this kind of exception before widget is initialized
if (result.data == null)
throw Exception();
resultData = result.data!;
}
2020-07-11 13:33:31 +02:00
@override
Widget build(BuildContext context) {
2020-07-16 22:11:23 +02:00
return ListView(
2020-07-11 13:33:31 +02:00
children: [
Container(
margin: EdgeInsets.fromLTRB(20.0, 20.0, 20.0, 30.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Flexible(
flex: 1,
fit: FlexFit.tight,
child: Center(child: SizedBox()),
),
Flexible(
flex: 1,
fit: FlexFit.tight,
2021-07-26 21:39:17 +02:00
child: Center(child: Header(query)),
2020-07-11 13:33:31 +02:00
),
Flexible(
flex: 1,
fit: FlexFit.tight,
child: Center(
2021-07-26 21:39:17 +02:00
child: (resultData.radical != null) ? Radical(resultData.radical!) : SizedBox(),
2020-07-11 13:33:31 +02:00
),
),
],
),
),
2021-08-08 23:16:54 +02:00
YomiChips(resultData.meaning.split(', '), YomiType.meaning),
resultData.onyomi.length != 0 ? YomiChips(resultData.onyomi, YomiType.onyomi) : SizedBox.shrink(),
resultData.kunyomi.length != 0 ? YomiChips(resultData.kunyomi, YomiType.kunyomi) : SizedBox.shrink(),
2020-07-11 13:33:31 +02:00
IntrinsicHeight(
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
2021-07-26 21:39:17 +02:00
StrokeOrderGif(resultData.strokeOrderGifUri),
2020-07-11 13:33:31 +02:00
Container(
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Text("JLPT: ", style: TextStyle(fontSize: 20.0)),
2021-07-26 21:39:17 +02:00
JlptLevel(resultData.jlptLevel ?? ""),
2020-07-11 13:33:31 +02:00
],
),
Row(
children: [
Text("Grade: ", style: TextStyle(fontSize: 20.0)),
2021-07-26 21:39:17 +02:00
Grade(resultData.taughtIn ?? ""),
2020-07-11 13:33:31 +02:00
],
),
Row(
children: [
Text("Rank: ", style: TextStyle(fontSize: 20.0)),
2021-07-26 21:39:17 +02:00
Rank(resultData.newspaperFrequencyRank ?? -1),
2020-07-11 13:33:31 +02:00
],
),
],
),
),
],
),
),
2021-07-26 21:39:17 +02:00
Examples(resultData.onyomiExamples, resultData.kunyomiExamples),
2020-07-11 13:33:31 +02:00
],
);
}
2021-07-17 12:19:03 +02:00
}