Rav*_*eri 21 dart flutter flutter-layout
我正在尝试创建一个简单的布局,flutter但不断收到此错误:
以下断言被抛出构建文本("更快地交付功能",textAlign:center):找不到方向性小部件.
我认为问题可能在TextDirection类属性中,但我一直无法找到它.
这是我的代码:
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
void main(){
runApp( new MyHome());
}
class MyHome extends StatelessWidget{
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Material(
child: new Container(
color: Colors.red,
margin: const EdgeInsets.all(5.0),
child: new Row(
children: <Widget>[
new Expanded(
child: new Text('Deliver features faster', textAlign: TextAlign.center),
),
new Expanded(
child: new Text('Craft beautiful UIs', textAlign: TextAlign.center),
),
new Expanded(
child: new FittedBox(
fit: BoxFit.contain, // otherwise the logo will be tiny
child: const FlutterLogo(),
),
),
],
)
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
以下是错误的完整堆栈跟踪:
The following assertion was thrown building Text("Deliver features faster", textAlign: center):
No Directionality widget found.
RichText widgets require a Directionality widget ancestor.
The specific widget that could not find a Directionality ancestor was:
RichText(textAlign: center, softWrap: wrapping at box width, maxLines: unlimited, text: "Deliver
features faster")
The ownership chain for the affected widget is:
RichText ? Text ? Expanded ? Row ? DecoratedBox ? Padding ? Container ? DefaultTextStyle ?
AnimatedDefaultTextStyle ? _InkFeatures-[GlobalKey#978b7 ink renderer] ? ?
Typically, the Directionality widget is introduced by the MaterialApp or WidgetsApp widget at the
top of your application widget tree. It determines the ambient reading direction and is used, for
example, to determine how to lay out text, how to interpret "start" and "end" values, and to resolve
EdgeInsetsDirectional, AlignmentDirectional, and other *Directional objects.
When the exception was thrown, this was the stack:
#0 debugCheckHasDirectionality.<anonymous closure> (package:flutter/src/widgets/debug.dart:223:7)
#1 debugCheckHasDirectionality (package:flutter/src/widgets/debug.dart:239:4)
#2 RichText.createRenderObject (package:flutter/src/widgets/basic.dart:4245:37)
#3 RenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4259:28)
#4 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#5 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#6 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#7 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#8 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#9 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#10 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#11 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#12 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#13 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#14 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#15 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#16 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:3938:16)
#17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#18 MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4738:32)
#19 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#20 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#21 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4633:14)
#22 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#23 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#24 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4633:14)
#25 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#26 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#27 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#28 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#29 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#30 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#32 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#33 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#34 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#35 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#36 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#37 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#38 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#39 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#40 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#41 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#42 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3752:22)
#43 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#44 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#45 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#46 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4633:14)
#47 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#48 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#49 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#50 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#51 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#52 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#53 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#54 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#55 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:4633:14)
#56 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#57 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#58 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#59 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#60 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#61 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3752:22)
#62 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#63 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#64 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#65 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#66 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#67 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#68 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:3752:22)
#69 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#70 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#71 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#72 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3636:16)
#73 Element.rebuild (package:flutter/src/widgets/framework.dart:3478:5)
#74 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3605:5)
#75 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3600:5)
#76 Element.inflateWidget (package:flutter/src/widgets/framework.dart:2890:14)
#77 Element.updateChild (package:flutter/src/widgets/framework.dart:2693:12)
#78 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:852:16)
#79 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:823:5)
#80 RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:769:17)
#81 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2205:19)
#82 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:768:13)
#83 BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&RendererBinding&WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:657:7)
#84 runApp (package:flutter/src/widgets/binding.dart:699:7)
#85 main (/data/user/0/com.yourcompany.flutterproject/cache/flutter_projectENWZDI/flutter_project/lib/main.dart:6:3)
#86 _startIsolate.<anonymous closure> (dart:isolate-patch/dart:isolate/isolate_patch.dart:279)
#87 _RawReceivePortImpl._handleMessage (dart:isolate-patch/dart:isolate/isolate_patch.dart:165)
????????????????????????????????????????????????????????????????????????????????????????????????????
Another exception was thrown: No Directionality widget found.
Another exception was thrown: Horizontal RenderFlex with multiple children has a null textDirection, so the layout order is undefined.
Another exception was thrown: 'package:flutter/src/rendering/box.dart': Failed assertion: line 1446 pos 12: 'hasSize': is not true.
uid=10079(com.yourcompany.flutterproject) Thread-5 identical 2 lines
Another exception was thrown: 'package:flutter/src/rendering/box.dart': Failed assertion: line 1446 pos 12: 'hasSize': is not true.
Another exception was thrown: 'package:flutter/src/rendering/proxy_box.dart': Failed assertion: line 1564 pos 12: 'hasSize': is not true.
Run Code Online (Sandbox Code Playgroud)
Rao*_*che 31
flutter不知道文本是LTR还是RTL,所以你需要明确地告诉他textDirection
new Text("Hello", textDirection: TextDirection.ltr)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用Directionality Widget 包装Text
new Directionality(
textDirection: TextDirection.ltr,
child: new Text('Hello')
Run Code Online (Sandbox Code Playgroud)
而且它的目的是:
一个小部件,用于确定文本和文本方向敏感渲染对象的环境方向性.
并且不需要为MaterialApp窗口小部件范围内的文本窗口小部件提供明确的书写方向,因为窗口小部件和材质库中的默认本地化是LTR
Gün*_*uer 18
如果你不使用,MaterialApp你需要自己将你的应用程序包装成一些小部件
import 'dart:ui' as ui;
...
runApp(
new MediaQuery(
data: new MediaQueryData.fromWindow(ui.window),
child: new Directionality(
textDirection: TextDirection.rtl,
child: new MyHome())))
Run Code Online (Sandbox Code Playgroud)
Cop*_*oad 12
如果您没有使用MaterialApp或WidgetsApp在树层次结构的根级别,则会收到此错误。
解决方案:
void main() {
runApp(
MaterialApp(home: MyHome()), // use MaterialApp
);
}
class MyHome extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold( // use Scaffold also in order to provide material app widgets
body: Center(child: Text("Something")),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7345 次 |
| 最近记录: |