Jisho-Study-Tool/lib/components/search/search_results_body/parts/header.dart

56 lines
1.7 KiB
Dart

import 'package:flutter/material.dart';
import 'package:unofficial_jisho_api/api.dart';
import '../../../../services/romaji_transliteration.dart';
import '../../../../settings.dart';
class JapaneseHeader extends StatelessWidget {
final JishoJapaneseWord word;
const JapaneseHeader({
required this.word,
Key? key,
}) : super(key: key);
bool get hasFurigana => word.word != null && word.reading != null;
@override
Widget build(BuildContext context) {
final String? wordReading = word.reading == null
? null
: (romajiEnabled
? transliterateKanaToLatin(word.reading!)
: word.reading!);
return Container(
alignment: Alignment.centerLeft,
padding: const EdgeInsets.only(left: 10.0),
child: Column(
children: [
// Both wordReading and word.word being present implies that the word has furigana.
// If that's not the case, then the word is usually present in wordReading.
// However, there are some exceptions where the reading is placed in word.
// I have no clue why this might be the case.
hasFurigana
? Text(
wordReading!,
style: romajiEnabled ? null : japaneseFont.textStyle,
)
: const Text(''),
hasFurigana
? Text(
word.word!,
style: japaneseFont.textStyle,
)
: Text(
wordReading ?? word.word!,
style: wordReading != null && romajiEnabled
? null
: japaneseFont.textStyle,
),
],
),
);
}
}