ColumnやRowのtextDirectionでエラーが起きる
出会った時
RowのtextDirectionで
TextDirection.rtl
を書こうとすると
The getter 'rtl' isn't defined for the type 'TextDirection'.
と怒られる。
代わりに変換で出てくるのは
TextDirection.RTL
大文字だったっけ?と思いながら書いてもエラー。。
原因
TextDirection.rtl
エラー文は
The argument type 'TextDirection (where TextDirection is defined in /Users/xxxx/flutter/.pub-cache/hosted/pub.dartlang.org/intl-
0.16.1/lib/src/intl/bidi_utils.dart)' can't be assigned to the parameter type 'TextDirection (where TextDirection is defined in /Users/xxxx/flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart)'.dartargument_type_not_assignable
bidi_utils.dart(26, 7): TextDirection is defined in /Users/xxxx/flutter/.pub-cache/hosted/pub.dartlang.org/intl-0.16.1/lib/src/intl/bidi_utils.dart
text.dart(1287, 6): TextDirection is defined in /Users/xxxx/flutter/bin/cache/pkg/sky_engine/lib/ui/text.dart
うーん、TextDirectionが二つ定義されてるらしい?
そのbidi_utils.dart
class TextDirection {
static const LTR = TextDirection._('LTR', 'ltr');
static const RTL = TextDirection._('RTL', 'rtl');
がある。これが原因か。そしてこのファイルは
import 'package:intl/intl.dart'
このパッケージによるファイルと判明。
解決方法
1.パッケージを消す
import 'package:intl/intl.dart'
を消せば問題は解決する
しかし僕はDateFormatを使っていたため、これを消すわけにはいかず。
2.インポート接頭辞
importには接頭辞を指定することができます。
import 'package:intl/intl.dart' as hoge
とすると
(old) DateFormat('HH:mm').format(date);
(new) format.DateFormat('HH:mm').format(date);
で使用できるようになる。すると他には影響せず、
TextDirection.rtl
が使えるようになりました。