Add kanji page
This commit is contained in:
6
lib/models/data_entry.dart
Normal file
6
lib/models/data_entry.dart
Normal file
@@ -0,0 +1,6 @@
|
||||
part 'yokutango_entry.dart';
|
||||
part 'kanji_entry.dart';
|
||||
|
||||
abstract class DataEntry {
|
||||
const DataEntry();
|
||||
}
|
||||
53
lib/models/kanji_entry.dart
Normal file
53
lib/models/kanji_entry.dart
Normal file
@@ -0,0 +1,53 @@
|
||||
part of 'data_entry.dart';
|
||||
|
||||
class KanjiEntry extends DataEntry {
|
||||
final String kanji;
|
||||
final List<WordConstruct> kana;
|
||||
|
||||
KanjiEntry.fromJson(Map<String, dynamic> json)
|
||||
: kanji = json['kanji'] as String,
|
||||
kana = [
|
||||
for (final j in json['kana'] as List) WordConstruct.fromJson(j)
|
||||
];
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return '$kanji - ${kana.join('、')}';
|
||||
}
|
||||
}
|
||||
|
||||
class WordConstruct {
|
||||
final List<WordPiece> pieces;
|
||||
|
||||
WordConstruct({required this.pieces});
|
||||
|
||||
WordConstruct.fromJson(dynamic json)
|
||||
: pieces = (json is String)
|
||||
? [WordPiece(word: json, isActive: true)]
|
||||
: [for (final j in json as List) WordPiece.fromJson(j)];
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return pieces.map((p) => p.isActive ? p.word : '(${p.word})').join('');
|
||||
}
|
||||
}
|
||||
|
||||
class WordPiece {
|
||||
final String? kana;
|
||||
final String? romaji;
|
||||
final String word;
|
||||
final bool isActive;
|
||||
|
||||
const WordPiece({
|
||||
required this.word,
|
||||
this.kana,
|
||||
this.romaji,
|
||||
this.isActive = false,
|
||||
});
|
||||
|
||||
WordPiece.fromJson(Map<String, dynamic> json)
|
||||
: kana = json['kana'] as String?,
|
||||
romaji = json['romaji'] as String?,
|
||||
word = json['text'] as String,
|
||||
isActive = json['active'] as bool? ?? false;
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:tangocard_reader/models/yokutango_entry.dart';
|
||||
import 'data_entry.dart';
|
||||
|
||||
class BenkyouArgs {
|
||||
final List<YokutangoEntry> cards;
|
||||
final List<DataEntry> cards;
|
||||
final int? index;
|
||||
|
||||
const BenkyouArgs({required this.cards, this.index});
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
class YokutangoEntry {
|
||||
part of 'data_entry.dart';
|
||||
|
||||
class YokutangoEntry extends DataEntry {
|
||||
final List<JapaneseWord> japanese;
|
||||
final List<NorwegianWord> norwegian;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user