Firebase 云消息传递和 Firebase 应用内消息传递有什么区别?它们都会向您的应用发送发生了某些事情的通知。我查看了他们的文档,这些是他们的单行描述:
Firebase 云消息传递:
Firebase 云消息传递 (FCM) 是一种跨平台消息传递解决方案,可让您可靠地免费发送消息。
Firebase 应用内消息传递:
通过上下文消息吸引活跃的应用程序用户。
他们都向应用程序发送消息。它们之间有什么区别,我什么时候应该使用它们?如果我想向应用程序发送用户已验证其电子邮件的消息,我应该选择哪一个?
如何删除TextFormField验证器创建的错误消息?我只想要红色边框,因为我没有空间来显示错误。
bool error = false;
TextFormField (
hintText:error?'please input productName':'',
hintStyle:TextStyle(color: Colors.red),
validator:(v){
v.trim().length>0?error=false:error=true; return null;
}
)
Run Code Online (Sandbox Code Playgroud) 单击后台FCM 通知时是否可以导航到指定路径?
我创建了一个顶级函数并将其添加到导航器路径但它不起作用,当单击后台通知时,它只会打开应用程序
我想我发现了一个问题
现在,我将
fcm配置从更改home page为splash screen. 前台没有导航到页面,我认为这是因为启动画面不再可用。当我点击通知消息时,它只会打开应用程序。
FCM 配置
onBackgroundMessage: backgroundMessageHandler
Run Code Online (Sandbox Code Playgroud)
顶层函数
Future<dynamic> backgroundMessageHandler(Map<String, dynamic> message) {
if (message.containsKey('data')) {
getIt<NavigationService>().navigateTo('/${message['data']['screen']}');
}
}
Run Code Online (Sandbox Code Playgroud)
有效载荷
const payload: admin.messaging.MessagingPayload = {
notification:{
title: `New Enquiry`,
body:`${customerName} published to ${subName}`,
badge: '1',
sound: 'default'
},
data: {
click_action: `FLUTTER_NOTIFICATION_CLICK`,
sound: `default`,
status: `chat`,
screen: `homePage`
}
}
Run Code Online (Sandbox Code Playgroud)
main.dart
GetIt getIt = GetIt.instance;
void main() {
setupLocator();
runApp(MyApp());
}
Run Code Online (Sandbox Code Playgroud)
材料应用
return MaterialApp( …Run Code Online (Sandbox Code Playgroud) 基本上我有很多小部件、服务和东西,就像大多数人一样,我需要在整个应用程序中访问它们。我想知道是否有一个导出每个文件的单个文件,然后只是简单地在每个页面/文件中导入一个文件我需要访问某些内容,而不仅仅是导入页面需要的特定文件,它会减慢应用程序的速度吗或导致任何问题或增加文件大小等......或者它的行为是否相同?
例子
login_page.dart
import '1.dart'
import '2.dart'
Run Code Online (Sandbox Code Playgroud)
主页.dart
import '2.dart'
import '3.dart'
import '9.dart'
import '10.dart'
Run Code Online (Sandbox Code Playgroud)
settings_page.dart
import '1.dart'
import '2.dart'
import '9.dart'
import '10.dart'
Run Code Online (Sandbox Code Playgroud)
或者...
all_imports.dart:
export '1.dart'
export '2.dart'
export '3.dart'
... (up until)
export '10.dart'
Run Code Online (Sandbox Code Playgroud)
在每个飞镖文件中:
import 'all_imports.dart'
Run Code Online (Sandbox Code Playgroud) 我在 Flutter 中有一行有两个小部件。我试图将第一个小部件保持在屏幕中间居中,而第二个小部件强制位于屏幕的最右侧。
我试过使用 Spacer()。这会导致应用返回空白屏幕。
我也试过使用 Expanded。这会将第二个小部件完全从屏幕上发送出去。
尝试 mainAxisAlignment: MainAxisAlignment.spaceBetween 似乎没有任何效果。
@override
Widget build(BuildContext context) {
return new Container(
height: MediaQuery.of(context).size.height,
child: SingleChildScrollView(
child: new Column(
crossAxisAlignment: CrossAxisAlignment.center,
mainAxisSize: MainAxisSize.max,
children: <Widget>[
new Container(
child: new GestureDetector(
onTap: () {
FocusScope.of(context).requestFocus(new FocusNode());
},
child: Column(
children: <Widget>[
SizedBox(height: 40.0),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
new Column(
children: <Widget>[
new Container(
child: Row(
mainAxisAlignment:MainAxisAlignment.spaceBetween,
children: <Widget>[
Container(),
Container(
child: Text(
'Profile',
textAlign: TextAlign.center,
style: TextStyle(
fontFamily: 'Lato',
color: Colors.white,
fontSize: 50.0, …Run Code Online (Sandbox Code Playgroud) 我想允许用户只添加数字“12345”和十进制数字(如“21321.12312”)和负数(如-23423.32432)。用户不应该能够添加多个“.” 比如“12..32”,并在第一个输入中添加“-”,比如-324.34,而不是324-4323。我使用了这个正则表达式r'^(-?\d+\.\d+)(\s*,\s*-?\d+\.\d+)+$',但无法输入任何内容。
文本字段代码:
TextFormField(
inputFormatters: [
FilteringTextInputFormatter.allow(
RegExp(r'^(-?\d+\.\d+)(\s*,\s*-?\d+\.\d+)+$')),
],
controller: budget,
keyboardType: TextInputType.number,
decoration: InputDecoration(
contentPadding:
EdgeInsets.only(right: 20, left: 20, top: 10, bottom: 10),
hintText: getTranslated(context, "budget_example"),
hintStyle: TextStyle(fontSize: 13, fontFamily: "tahoma"),
border: OutlineInputBorder(
borderSide: BorderSide(width: 1, color: MyColors.secondary),
borderRadius: BorderRadius.circular(100),
),
),
),
Run Code Online (Sandbox Code Playgroud) 我可以TextField's使用以下代码将颜色的轮廓颜色更改为纯色:
TextField(
decoration: InputDecoration(
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(color: Colors.orange),
),
),
),
Run Code Online (Sandbox Code Playgroud)
但是,我无法将其颜色更改为渐变,因为它只接受颜色作为输入。在 Flutter 中如何将其下划线颜色更改为线性渐变?
Flutterhot reloads每次 VS Codeauto-saves我的项目之前。几个小时前,我开始遇到这个问题,我的应用程序auto-saving没有hot-reload。Ctrl+S手动按下会触发,hot reload但auto-saving不会。我已经尝试重新安装 VS Code 和 Flutter SDK,但问题仍然存在。
我新安装的 VS Code 只有以下扩展和设置:
Dart: v3.19.1
Flutter: v3.19.0
Auto-save设置为afterDelay1000ms
在 vscode 中自动保存时如何热重载?另一个人在两个小时前遇到了同样的问题:https : //github.com/Dart-Code/Dart-Code/issues/3110
我有从 HTTP 请求收到的 JSON 字符串:
[
{
"id":15,
"title":"1",
"description":"desc",
"user_id":152
},
{
"id":18,
"title":"2",
"description":"desc",
"user_id":152
},
{
"id":19,
"title":"tab3",
"description":"zadanka",
"user_id":152
}
]
Run Code Online (Sandbox Code Playgroud)
如何将其转换为对象的 ArrayList?
在从bloclibrary网站学习flutter_bloc 时,我不得不使用一个名为. 谁能向我解释一下它到底是做什么的?copyWith()
我有一个模型测试列表,其中测试包含一个名为 selected 的布尔属性,如果列表的 selected 属性中的所有条目都为 true,将变量设置为 true 的最佳方法是什么?
目前,我设置了一个 for 循环,该循环遍历列表中的每个条目并检查 selected 是否为 true。如果任何选择为 false,则检查器变量需要为 false:
for (var i = 0; i < List.length; i++)
if List[i].chosen == false
checker = false;
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来通过列表迭代来做到这一点?
我有一个显示字符串列表的下拉列表。字符串的值包含仅由四个字母组成的单词和由多个字母组成的单词。当所选项目是具有四个字母的项目时,这会产生布局问题。在文本和下拉按钮的尾随图标之间可以看到空白或空白区域。怎么能去掉这个空白?如何根据所选值调整下拉按钮的大小?
文本和尾随图标之间的空白空间照片:
列表:
List<String> textList = ["test", "this_is_a_long_text"];
Run Code Online (Sandbox Code Playgroud)
落下:
DropdownButtonHideUnderline(
child: ButtonTheme(
alignedDropdown: true,
child: DropdownButton<String>(
items: textList.map((String dropDownStringItem) {
return DropdownMenuItem<String>(
value: dropDownStringItem,
child: Text(dropDownStringItem),
);
}).toList(),
onChanged: (String newValueSelected) {
_onDropDownItemSelected(newValueSelected);
},
value: _currentItemSelected,
),
)),
Run Code Online (Sandbox Code Playgroud) 我正在构建一个壁纸应用程序,想要实现切换视图的功能,例如在 FLutter 中按一下切换到GridView到ListViewIconButton
看起来像这样:
我能想到实现此功能的唯一方法是通过将计数器连接到属性并通过单击的函数来控制它来更改方法crossAxisCount中的值,这可以工作,但每次我都必须热重新加载我的应用程序计数器递增或递减,GridView.count()crossAxisCountIconButton
欢迎对此问题提出任何建议或解决方案。