我正在尝试举一个简单的示例,在Flutter中屏幕的中心位置有一个可单击的按钮。我可以使用MaterialApp小部件来做到这一点,但我不想使用MaterialApp。
此示例适用于“文本”小部件
import 'package:flutter/material.dart';
void main() {
runApp(
Center(
child: Text(
'Hello, world!',
textDirection: TextDirection.ltr,
),
),
) ;
}
但是我所有使用FlatButton或RaisedButton更改Text小部件的尝试都失败了,因为它们依赖于Material Widget
我也尝试过:
import 'package:flutter/material.dart';
void main() {
runApp(
Container(
decoration: BoxDecoration(color: Colors.white),
child:Center(
child: RaisedButton(
child: const Text('Press meh', textDirection: TextDirection.ltr),
onPressed: () {
},
),
)
)
);
}
问题是:有什么方法可以使Button不依赖于Material Widget?
答案 0 :(得分:0)
您必须先使用-WidgetsApp
。
void main() {
runApp(SomeText());
}
class SomeText extends StatelessWidget {
@override
Widget build(BuildContext context) {
return WidgetsApp(
builder: (context, int) {
return Center(
child: RaisedButton(
onPressed: () {},
child: Text(
'Hello, world!',
textDirection: TextDirection.ltr,
),
),
);
},
color: Colors.blue,
);
}
}
根据文档-
WidgetsApp,它定义了基本的应用程序元素,但并不依赖 在材料库上。
更新-,不带其他类别:
如果您使用home:
,则需要通过-onGenerateRoute
或pageRouteBuilder
如果未提供builder和onGenerateRoute,则 必须指定pageRouteBuilder,以便默认处理程序将 知道要构建哪种PageRoute过渡。
void main() {
runApp(WidgetsApp(
builder: (context, int) {
return Center(
child: RaisedButton(
onPressed: () {},
child: Text(
'Hello, world!',
textDirection: TextDirection.ltr,
),
),
);
},
color: Colors.blue,
));
}