在下面的示例中,当我推送新的 MaterialPageRoute 时,它与 Flutter 小部件树中的 Home 小部件在同一级别上创建。我想把它作为小部件 Home 的子部件,所以 Home 将是 Child 部件的父部件。
这是一个完整的代码:
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(
home: Home(),
));
}
class Home extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
Center(
child: Text("This is home"),
),
RaisedButton(
child: Text("Open child view"),
onPressed: () {
Navigator.of(context)
.push(MaterialPageRoute(builder: (context) => Child()));
},
)
],
),
);
}
}
class Child extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Container( …Run Code Online (Sandbox Code Playgroud) 当我在Fluter中调用方法showTimePicker()时,它显示了一个12小时制的选择器(使用AM和PM周期).此外,当我在TimeOfDay对象上调用format()方法时,它在12小时系统中返回值.
我如何将其更改为24小时制?我发现我需要在Window类中更改alwaysUse24HourFormat属性,但我不知道该怎么做.
谁能帮助我?提前感谢您的回答.
编辑:代码如下所示:
Future<Null> _selectTime(BuildContext context) async {
final TimeOfDay response = await showTimePicker(
context: context,
initialTime: pickedTime,
);
if (response != null && response != pickedTime) {
setState(() {
pickedTime = response;
});
}
}
Run Code Online (Sandbox Code Playgroud)
edit2:我只用Android试过这个.
是否可以通过通知单击导航到应用程序中的特定MaterialPageRoute?我在主屏幕中配置了通知:
void _configureNotifications() {
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.requestNotificationPermissions();
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) {
_goToDeeplyNestedView();
},
onLaunch: (Map<String, dynamic> message) {
_goToDeeplyNestedView();
},
onResume: (Map<String, dynamic> message) {
_goToDeeplyNestedView();
},
);
}
_goToDeeplyNestedView() {
Navigator.push(
context,
MaterialPageRoute(
builder: (_) => DeeplyNestedView()));
}
Run Code Online (Sandbox Code Playgroud)
问题是,当我这样配置它时,它只能从配置通知的窗口小部件中唤醒(我猜这是因为在Navigator.push()中使用了“上下文”。是否有某种方法可以从菜单中的任何位置访问MaterialPageRoute应用程序而不使用任何上下文?
预先感谢您的回答。