小编Mar*_* Dz的帖子

警告:列表中的每个孩子都应该有一个唯一的“关键”道具,但我有关键道具

提供的答案没有给我提示我的案例有什么问题。所以我在控制台中收到以下错误:

react-jsx-dev-runtime.development.js?bfcc:117 Warning: Each child in a list should have a unique "key" prop.

Check the render method of `Feed`. See https://reactjs.org/link/warning-keys for more information.
Run Code Online (Sandbox Code Playgroud)

这是我在返回语句中的代码:

return (
    <>
      <Header></Header>
      <div className={hfstyles.feed} style={{ 'maxWidth': '980px;', 'textAlign': 'center', 'margin': '0 auto', 'padding': '5em 0' }}>

        {feed.map((post, index) => {
          const postBefore = index == 0 ? new Date() : feed[index - 1].createdAt;
          return randomIndex == index ? (
            <>
            <PostBasic
              post={post}
              postBefore={postBefore}
              key={post.id}
            />
            <RandomMessage/>
            </>)
            :
            (<PostBasic
              post={post}
              postBefore={postBefore}
              key={post.id} …
Run Code Online (Sandbox Code Playgroud)

reactjs next.js

12
推荐指数
1
解决办法
5万
查看次数

Next.js 默认情况下是同站点来源,但我仍然可以访问它

我想知道如何保护我的 api 路由。文档说,api 路由默认是同站点源。

API 路由不指定 CORS 标头,这意味着它们仅在默认情况下是同源的。您可以通过使用 cors 中间件包装请求处理程序来自定义此类行为。 Next.js 文档

但是,如果我使用像 Postman 这样的请求工具,我总是可以调用它并获取结果:

// Next.js API route support: https://nextjs.org/docs/api-routes/introduction

export default (req, res) => {
  res.status(200).json({ name: 'John Doe' })
}
Run Code Online (Sandbox Code Playgroud)

这怎么可能?我只想限制对我的应用程序的访问。

next.js

7
推荐指数
1
解决办法
3957
查看次数

flutter firebase 使用refreshToken自动刷新用户会话

我希望我的应用程序中的用户保持登录状态。我正在使用带有 IDToken 的 firebase 身份验证,该身份验证持续 1 小时直至过期。如果会话即将过期,我想每次自动刷新会话。

到目前为止我在这里读到的内容https://firebase.google.com/docs/reference/rest/auth/#section-refresh-token应该可以通过某种方式https://securetoken.googleapis.com/v1/token?key=[API_KEY]

这是我现在的完整身份验证代码(颤振)

import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
import '../provider/http_exception.dart';
import 'dart:async';
import 'package:shared_preferences/shared_preferences.dart';

class Auth with ChangeNotifier {
  String _token;
  DateTime _expiryDate;
  String _userId;
  Timer _authTimer;
  bool wasLoggedOut = false;
  bool onBoarding = false;

  Future<void> createUser(String email, String firstName, String lastName) async {
    final url = 'https://test45.firebaseio.com/users/$userId.json?auth=$token';
    final response = await http.put(url, body: json.encode({
      'userEmail': email,
      'userIsArtist': false,
      'userFirstName': firstName,
      'userLastName': lastName,
    }));
    print('post ist done');
    print(json.decode(response.body)); …
Run Code Online (Sandbox Code Playgroud)

dart firebase firebase-authentication flutter

6
推荐指数
1
解决办法
1万
查看次数

当我停止播放具有功能的歌曲并更改导航栏索引时,颤振音乐继续播放

我有一个包含每个项目的音乐的列表。如果我关闭屏幕,我会更改index当前位置BottomNavigationPage并调用停止函数来停止音频,但有时这不起作用。如果歌曲正在加载过程中或用户速度非常快,歌曲将继续在不同页面上播放。

我使用https://pub.dev/packages/audioplayers插件。

这是我的缩小代码示例完整工作演示:编辑::

因此,我按照 @Ringil 的提示提供了一个完整的工作示例,其中包含我在这里面临的实际问题。这是我的代码:

import 'package:audioplayers/audioplayers.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

  int currentIndex =0;

  @override
  Widget build(BuildContext context) …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout flutter-listview flutter-pageview

6
推荐指数
1
解决办法
2977
查看次数

Flutter Firestore 检索随机 Firestore 文档

我希望有人可以帮助我完成以下实现:我只想从 firestore 检索随机文档。

按照这个使用自动 ID 版本的流行指南,我使用自动生成的文档 ID 并将它们保存为 field idFirestore:如何获取集合中的随机文档

[..]自动 ID 版本 如果您使用我们的客户端库中提供的随机生成的自动 ID,您可以使用同一系统随机选择文档。在这种情况下,随机排序的索引是文档 id。[...]

为查询获取随机 id 似乎是显而易见的,但对于我来说,作为菜鸟,我不确定从哪里随机获取自动 id 值以及如何在_randomIndex不运行查询的情况下适合我的值。我该如何定义我的_randomIndex现在?

QuerySnapshot querySnapshot = await ref
        .where('id', isGreaterThanOrEqualTo: _randomIndex)
        .orderBy('id', descending: true)
        .limit(1)
        .get();
Run Code Online (Sandbox Code Playgroud)

解决方案

谢谢大家!我认为对于更多的人来说,如何通过查看上述指南并使用flutter来实现给定的方法可能并不是那么简单。

例如,我在 flutter 上下文中听到有关 uuid 和随机 id 的信息,总是向我推荐流行的库,例如https://pub.dev/packages/uuid/examplehttps://pub.dev/packages/flutter_guid/install

就我而言,它们不起作用,感谢@Jigar Patel,我们现在可以完美地随机化它。在下面的例子中我们还可以确定文档的数量:

import 'dart:math';

String getRandomGeneratedId() {
  const int AUTO_ID_LENGTH = 20;
  const String AUTO_ID_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  
  const int maxRandom = AUTO_ID_ALPHABET.length;
  final Random …
Run Code Online (Sandbox Code Playgroud)

firebase flutter google-cloud-firestore

6
推荐指数
1
解决办法
2222
查看次数

Flutter 音频插件无法处理我的音乐链接

希望有人正面临我的问题或可以提供解决方案。我使用 firebase 来保存和播放我的音乐。来自我的数据库项目的以下流链接不适用于 AudioManager ( https://pub.dev/packages/audio_manager ) 或 audioplayers 插件 ( https://pub.dev/packages/audioplayers ),我没有找到任何其他插件它以正确的方式工作的地方。老实说,让它与 AudioManager 插件一起工作会很棒。我还尝试在两个插件提供程序项目中提出问题,但目前没有任何成功。

我面临的问题: 功能停止功能无法识别停止。上一个和下一个以及 PlayPause 仅适用于延迟。在提供的示例中,我使用 AudioManager 插件。

在提供的示例中,我们有一个水平列表,当您按下右上角的按钮时,我试图停止播放音乐。使用流媒体链接无法识别任何内容。它忽略停止歌曲。下一首歌曲也有轻微的延迟。

如果您将音频链接更改为带有文件结尾的链接,则停止播放歌曲的效果非常好,延迟也更少。在我的情况下更重要的是在没有文件结尾的情况下获取链接源!

var audioFiles = [
    "https://docs.google.com/uc?export=open&id=1SaJWqfQuHnFtL7uqrzfYG31hzOnqDM3r",
    "https://docs.google.com/uc?export=open&id=1FZkFMjQyWguAl0RMAsYDEZ07c_Qf7gjz",
    "https://docs.google.com/uc?export=open&id=1GqrwQ3eRuiil0p-Na_R1tMAvggp9YrbH",
  ];
Run Code Online (Sandbox Code Playgroud)

如果您使用文件类型结尾的链接,如下例所示,一切正常且没有延迟:

var audioFiles = [
    "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3",
    "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-2.mp3",
    "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-3.mp3"
  ];
Run Code Online (Sandbox Code Playgroud)

重现代码:

import 'package:audio_manager/audio_manager.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: …
Run Code Online (Sandbox Code Playgroud)

avplayer android-mediaplayer firebase flutter

5
推荐指数
0
解决办法
203
查看次数

Flutter 群聊发送消息后不刷新

我是 bloc 的新手,正在尝试使用包实现聊天flutter_bloc。我的消息传递服务是 twilio Conversations api。我的功能运行得很好,我只是无法刷新我的消息列表。有人可以告诉我我在这里缺少什么吗?如果我访问聊天页面,我可以看到所有消息,只有当我们有新消息时它才不会刷新。

\n

由于取得了小小的成功,我更新了我的代码。每当用户 A 或用户 B 加入聊天时,都会显示所有消息。如果我以用户 A 的身份发送消息,则该消息现在将在用户 A 的 UI 中可见,并且它是对话的一部分,但用户 B 在不重新加载的情况下不会收到添加到对话中的新消息。这里缺少哪个步骤以便其他用户也收到消息?我只需要帮助转换我的代码,以便我有一个流,聊天的其他参与者可以收听,这样他们的对话也令人耳目一新。

\n

我的 chat_event.dart

\n
  abstract class ChatEvent extends Equatable{\n  const ChatEvent();\n\n  @override\n  List<Object> get props => [];\n}\n\nclass InitialChatEvent extends ChatEvent {}\n\nclass AddMessage extends ChatEvent {\n  final String messageToPost;\n\n  AddMessage(this.messageToPost);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

我的 chat_state.dart

\n
   class ChatState extends Equatable {\n  final Messages messages;\n\n  const ChatState({required this.messages});\n\n  factory ChatState.initial() =>  ChatState(messages: Messages(messages: []));\n\n  @override\n  List<Object> get props => [messages];\n\n  @override\n …
Run Code Online (Sandbox Code Playgroud)

flutter bloc flutter-bloc twilio-conversations flutter-streambuilder

5
推荐指数
1
解决办法
2215
查看次数

Flutter 从 var 中的图像获取像素颜色

假设我们有几张背景图片:

在此输入图像描述

我们如何用函数选择图像的左上角、右上角、左下角、右下角和中心像素颜色并将它们保存在变量中?

没发现什么好东西可以去..

编辑,这是我到目前为止得到的代码。

import 'dart:async';
import 'dart:typed_data';
import 'dart:ui' as ui;

import 'package:image/image.dart' as img;
import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter/rendering.dart';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:muego_dev2/models/songs.dart';
import 'package:provider/provider.dart';



class ColorDetect extends StatefulWidget {
  //static const routeName = '/';

  @override
  _ColorDetectState createState() => _ColorDetectState();
}

class _ColorDetectState extends State<ColorDetect> {


 @override
  Widget build(BuildContext context) {

final coverData = 'https://flutter.github.io/assets-for-api-docs/assets/widgets/owl.jpg';
img.Image photo;



void setImageBytes(imageBytes) {

    List<int> values = imageBytes.buffer.asUint8List();
    photo = null;
    photo = img.decodeImage(values);
  }

  // image lib uses …
Run Code Online (Sandbox Code Playgroud)

dart flutter

2
推荐指数
2
解决办法
1万
查看次数

减少 Firebase 存储带宽

我目前正在开发一个视频流应用程序,实际上我注意到我的应用程序中的带宽非常高。我正在使用免费的Spark 计划,并且我已经达到了免费计划的限制,其中包含5 个视频。

我正在我的应用程序中流式传输视频,它们不超过 10 mb 并上传到我的 firebase 存储中。我将 firebase 存储链接保存在我的实时数据库中,以使其可在应用程序中播放。

我想知道我是否做错了什么,有 5 个视频小于 10mb,我在大约 1 小时内消耗了 300mb 带宽。对于正在播放的每个视频,它占用大约 20-30mb 的带宽。

我该如何改进?当我有 1000 个用户时,我将每月支付数千美元。

firebase flutter firebase-storage

2
推荐指数
1
解决办法
402
查看次数

使用 Google Apps 脚本将文件上传到我的谷歌驱动器(GOOGLE 中没有表格)

所以基本上任务很简单,但我没有找到任何可行的解决方案来解决我的问题。我的网站上有一个巨大的上传脚本(目前是本地主机),但让我们将所有复杂性降低到唯一必要的程度。

所以我只想使用 Google App Script 将单个文件上传到 Google Drive 并接收它的 URL 以将其保存在 var 中,以便在我的函数中稍后处理该信息。

现在的问题是我的网站上已经有了表单,我不希望 script.google.com 中的表单作为额外的 html,我想将我的用户输入传输到 Google App Script,然后将其上传到 google drive 并返回 url回到我的网站,我可以将它保存到一个 var 中。

我现在的问题是,我不能把所有的东西放在一起。

这是我网站上的表格(简化版):

<form name="myForm" method="post">
            <!-- <form name="first-form"> -->

  <input type="text" placeholder="Name" id="myName">
  <input type="file" name="myFile" id="myFile">
  <button onclick="UploadFile()" type="submit">submit</button>

</form>
Run Code Online (Sandbox Code Playgroud)

那么如何将我的信息上传到谷歌驱动器中并获得结果呢?如何在不使用 iFrame 或其他任何东西的情况下推送 Google App Script 中的数据?

谢谢你!

**** 工作示例,如果 html 在 scripts.google.com 中 ****

GS

function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('forms.html').setTitle("Google File Upload by CTRLQ.org");
}


function uploadFileToGoogleDrive(data, file, name, email) {
  
  try …
Run Code Online (Sandbox Code Playgroud)

javascript ajax jquery google-apps-script

1
推荐指数
1
解决办法
1万
查看次数