因此,我有一个要求,我需要在该位置显示Snackbar
应用程序启动时的状态,但是当我尝试执行该操作时,它会显示上下文错误。我怎么知道我的窗口小部件树已构建并使用上下文显示Snackbar
。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
Scaffold.of(context).showSnackBar(SnackBar(content: Text('Welcome User')));
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[],
),
),
);
}
}
创建类型为ScaffoldState的GlobalKey,以确保您以正确的Scaffold为目标,以在其上显示SnackBar。
将目标脚手架的密钥设置为您创建的密钥。
在initState()函数中,使用WidgetsBinding类和addPostFrameCallback在构建布局时执行代码。在回叫中显示您的SnackBar。
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
var _scaffoldKey = GlobalKey<ScaffoldState>();
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) => _scaffoldKey.currentState.showSnackBar(SnackBar(content: Text('Welcome User'))));
}
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[],
),
),
);
}
}
我是flutter的新手,我只是试图接收firebase推送通知到我的flutter应用程序。当应用程序关闭时,在后台接收推送通知。但是当应用程序打开时,推送通知正在接收,但它不显示警报通知(如果它打开了,我想在我的应用程序中显示推送通知的标题和正文作为警报)。这是我的代码。 谁能帮我做这个吗?
我试着用firebase云消息通过控制台发送通知来测试我的应用程序,但当我的应用程序在前台或仍在运行时。设备中不显示通知,并且触发了firebase消息服务中的日志。 这是我的firebasemessagingservice
我正在开发一款小型jetpack compose演示聊天应用程序。所以我需要在底部有一个带文本字段和发送按钮的栏,就像WhatsApp一样……我想最好使用带底部栏的脚手架。 现在的问题是,当键盘打开时,底部栏隐藏在键盘后面。有办法吗?
在我的演示应用程序中,我需要从服务器加载一个2 JSON文件。这两个JSON都有大量数据。我使用Future+async+await调用json,而不是使用runapp创建小部件。在体内,我试图激活一个循环进程指示器。它显示appBar及其内容,以及空的白色页面主体,4或5秒后加载实际主体中的数据。 我的问题是,我需要首先显示CircularProgressIndicator,一旦加载数据,我将调
我在我的应用程序中使用底部导航,如下所示。 我想从底部导航的每个页面都有一个不同的(一些应用程序栏有不同的图标和标题。因此不能在AppMainPage中使用普通的应用程序栏)脚手架小部件内的AppBar如下所示。 主页appbar代码 我不确定我的代码实现是否符合我的要求,如果有人能在这方面提供帮助,我很高兴。