我在android studio中运行Flutter代码时遇到异常。
I / flutter(5360):W小部件库引起的异常提示 ╞═════════════════════════════════════════════════ ══════════我/扑 (5360):构建了Text(“ xyz”)时引发了以下断言:I / flutter(5360):找不到方向性小部件。我/扑 (5360):RichText小部件需要Directionality小部件祖先。 I / flutter(5360):无法找到特定的窗口小部件 方向性祖先是:I / flutter(5360):RichText(softWrap: 以盒子宽度包装,maxLines:无限制,文本:“ xyz”) I / flutter(5360):受影响的小部件的所有权链为: I / flutter(5360):RichText←Text←Center←Container←[root] I / flutter(5360):通常,会引入“方向性”小部件 通过I / flutter上的MaterialApp或WidgetsApp小部件(5360): 您的应用程序小部件树。它确定环境读数 方向,用于I / flutter(5360):例如,确定 如何布置文本,如何解释“开始”和“结束”值,以及 解析I /颤振(5360):EdgeInsetsDirectional, AlignmentDirectional和其他* Direction对象。
代码段:
import 'package:flutter/material.dart';
void main() {
runApp(
Container(child: Center(child: Text("xyz"))),
);
}
我不确定为什么该异常显示
I / flutter(5360):通常,方向性小部件由MaterialApp或WidgetsApp小部件在...处引入。
由于一切都是混乱,因此任何窗口小部件都应该对我们有用。
答案 0 :(得分:2)
如果您使用的是诸如Scaffold
,Material
之类的小部件组件,则无需在textDirection
小部件中指定Text
,因为{{1}在这些情况下,将隐式提供}。因此,一个好的解决方案是使用:
Directionality
但是,如果您不使用它,则必须
Scaffold(body: Text("xyz"))
答案 1 :(得分:1)
文本小部件需要知道它是应从左到右还是从右到左显示文本。没有默认值。可以通过两种方式提供此信息:
Directionality
小部件中(如错误消息中所述,通常为MaterialApp
或WidgetsApp
)Text(
'Hello World',
textDirection: TextDirection.ltr,
)
从长远来看,第二种方法显然是无法控制的。
答案 2 :(得分:0)
如果您使用的是方向性构造函数,那么您的问题将会解决
Widget build(BuildContext context) {
return Directionality(
textDirection: TextDirection.ltr,
child: Container(
color: myColor,
child: Center(
child: RaisedButton(
onPressed: () {
print('You pressed me');
changeColor();
},
child: Text('Click', textDirection: TextDirection.ltr)
),
),
),
);
}
答案 3 :(得分:0)
后期,但我希望它能对您有所帮助。 我也不使用任何预定义的根小部件。因此,我将我的应用程序包装到了主要功能的“方向性”小部件中,而flutter不再抱怨:
我的代码:
void main() {
runApp(
new Directionality(textDirection: TextDirection.ltr, child: MyApp())
);
}