小编Red*_*edZ的帖子

Flutter - 使用 showDialog 时无法在父树中找到块

我在一个小应用程序中使用 Flutter 和 flutter_bloc,并且我使用 MultiBlocProvider 在主主页中使用我需要的多个 BlocProvider,并且在主页下有一个 MainWidget,它可以通过以下方式轻松访问给定的 Bloc:BlocProvider.of<OldBloc>(context) MainWidget 调用NewWidget 作为对话框:showDialog(context: context, builder: (context) => NewWidget()) 问题是,我无法从 NewWidget() 访问 OldBloc,所以我假设 MainWidget 在使用 showDialog 时没有将其上下文传递给 NewWidget ?

主屏幕.dart

import 'package:flutter/material.dart';

class HomeScreen extends StatelessWidget {
  const HomeScreen({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: MultiBlocProvider(
      providers: [
        BlocProvider(
          create: (context) => OldBloc()..add(Initialize()),
        ),
        BlocProvider(
          create: (context) => OtherBloc()..add(Initialize()),
        ),
      ],
      child: Stack(
        children: [
          MainWidget(),
          MenuWidget(),
        ],
      ),
    ));
  }
}
Run Code Online (Sandbox Code Playgroud)

MainWidget.dart

import …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-bloc

10
推荐指数
2
解决办法
4327
查看次数

使用 Alpine JS 将鼠标悬停在下拉菜单上

我想构建一个在鼠标悬停时显示并显示元素的菜单:类别:-子类别1-子类别2

我设法做到了这一点,但我的问题是,当我将鼠标悬停在菜单上并显示里面的元素并且我将鼠标移离菜单本身时,元素不会隐藏。

这是我的代码:

<div x-data="{open: false}">
    <button @mouseover="open = true">Category</button>
    <div x-show="open" @mouseout="open = false" class="h-80 bg-red-900">
        <ul>
            <li>Sub-category 1</li>
            <li>Sub-category 2</li>
        </ul>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

html javascript alpine.js

7
推荐指数
2
解决办法
5248
查看次数

Firebase Auth SMS 不包含 11 个字符的哈希值

我尝试使用 Firebase Auth 进行电话身份验证,一切都已设置完毕,并且我在我的应用程序上收到一条短信,但它在短信正文底部不包含 11 个字符的哈希值,因此我无法使用自动检索功能。我设置了 SHA-1 和 SHA-256 以及所有内容,但我得到的是我的 firebase 项目的 URL,而不是哈希代码。

我做错了什么吗?

firebase-authentication

6
推荐指数
0
解决办法
326
查看次数

flutter_bloc - 为什么存储库是在 UI 而不是后端声明的?

我正在尝试 flutter,并且在 github 上提出了许多项目,这些项目声明了存储库并将它们传递给 UI 端的块。为什么这是正确的方法而不是在后端(在集团上)?

例子:

class MyApp extends StatelessWidget {
  final authenticationRepository = AuthenticationRepository();
  final accountRepository = AccountRepository();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      debugShowCheckedModeBanner: false,
      home: MultiRepositoryProvider(
        providers: [
          RepositoryProvider(create: (_) => authenticationRepository),
          RepositoryProvider(create: (_) => accountRepository),
        ],
        child: BlocProvider(
          create: (_) => AuthenticationBloc(
            authenticationRepository: authenticationRepository,
            accountRepository: accountRepository,
          ),
          child: Container(); // I removed the content here
          ),
        ),
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

flutter flutter-bloc

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

定期计时器内的“事件处理程序正常完成后调用发出”问题

我使用 Flutter 和 flutter_bloc 制作一个应用程序,它定期向我的服务器发送 API 请求并请求数据。在我使用计时器实现周期性功能之前,它最初工作得很好,这是我的块文件:

class HomeBeehivesBloc extends Bloc<HomeBeehivesEvent, HomeBeehivesState> {
  HomeBeehivesBloc() : super(BeehivesInitial()) {
    on<LoadBeehives>((event, emit) => _onBeehivesLoaded(emit));
  }

  Future<void> _onBeehivesLoaded(Emitter<HomeBeehivesState> emit) async {
    emit(BeehivesLoading());

    final repository = BeehivesRepository();

    const duration = Duration(seconds: 5);
    Timer.periodic(duration, (timer) async {
      try {
        await repository.getHomeBeehives().then((beehives) async {
          emit(BeehivesLoadedSuccessfully(beehives: beehives));
        });
      } catch (exception) {
        log(exception.toString());
      }
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

但我得到了这个例外:

'package:bloc/src/emitter.dart': Failed assertion: line 114 pos 7: '!_isCompleted': 

      emit was called after an event handler completed normally.
      This is usually …
Run Code Online (Sandbox Code Playgroud)

flutter flutter-bloc

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

Winforms (.NET Core 3) 是否支持所有 .NET Framework 控件

我们刚刚转移到 .NET,我们正在尝试使用 C#/.NET 重新创建我们的一个旧项目,我们听说 .NET Core 是新项目的方法,我们对使用 WinForms 非常感兴趣,所以我一直在尝试 Visual Studio 2019 预览版(16.5.0 预览版 2.0),但我注意到并非所有控件都显示在设计器中(我知道设计器刚刚添加到预览中),所以我尝试了在 Form1.designer.cs 上手动添加控件,但我不确定这是否是正确的方法,或者我们应该等待更成熟的版本还是只使用 .NET Framework?PS:如果 .NET Core 更支持 WPF,我们也可以使用 WPF。

在此处输入图片说明

谢谢

.net c# winforms .net-core

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

Xamarin - CollectionView,将当前项目作为命令参数传递

我有一个绑定到 ObservableCollection 的 CollectionView,在视图的每一行内我有一个 (LIKE/UNLIKE) 按钮,当单击该按钮时,将调用 ViewModel 上的命令,该命令应读取 ID + 状态(按钮选中/未选中)以确定它是否应该执行 LIKE 或 UNLIKE API 调用。我的问题是,如何将当前项目(按钮的父行)作为命令参数(产品类型)传递?

这是我的 XAML:

<CollectionView ItemsSource="{Binding Products}" SelectionMode="Single" SelectedItem="{Binding SelectedProduct , Mode=TwoWay}" RemainingItemsThreshold="{Binding ItemsThreshold}" RemainingItemsThresholdReachedCommand="{Binding LoadProductsCommand}" BackgroundColor="Fuchsia">
                <CollectionView.ItemsLayout>
                    <GridItemsLayout Orientation="Vertical" VerticalItemSpacing="10"></GridItemsLayout>
                </CollectionView.ItemsLayout>
                <CollectionView.ItemTemplate>
                    <DataTemplate>
                        <Frame BorderColor="Black" BackgroundColor="Green" HeightRequest="100" Padding="0" Margin="0 , 10" HasShadow="True">
                            <Grid Padding="0">
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="*"></RowDefinition>
                                    <RowDefinition Height="*"></RowDefinition>
                                </Grid.RowDefinitions>
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                    <ColumnDefinition Width="*"></ColumnDefinition>
                                </Grid.ColumnDefinitions>

                                <Image Source="{Binding photo_1}" Aspect="AspectFill" Grid.Row="0" Grid.Column="0"></Image>

                                <StackLayout Grid.Row="1" Grid.Column="1" BackgroundColor="Yellow" HorizontalOptions="End">
                                    <button:SfButton Text="HEART" IsCheckable="True" IsChecked="{Binding liked}" Command="{Binding Source={x:Reference MyProductsPage} …
Run Code Online (Sandbox Code Playgroud)

xaml xamarin

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

在 Qt 上使用 std::unique_ptr

长期以来,我一直在使用旧的 C++ 进行编程,因为我和我的团队从未决定升级到现代编程实践(我承认,部分原因也是我的错),所以最近我一直在学习 C++11, C++14、C++17 所以我可以掌握它的窍门,我遇到的第一件事是 std::unique_ptr,在我看来它使用起来很棒,但我仍然对将它与 Qt 一起使用感到困惑,因为我在 Qt 中读到过,如果我创建一个 QObject,它是另一个 QObject 的子级,如果父级被删除,那么子级也将被删除,并且使用 std::unique_ptr 可能会导致双重删除。所以我想知道,这是正确的:

主窗口.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlQueryModel>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QSqlDatabase p_AppDB;
    QSqlQueryModel *p_QueryModel;
};
#endif // MAINWINDOW_H
Run Code Online (Sandbox Code Playgroud)

主窗口.cpp:

#include "MainWindow.h"
#include "ui_MainWindow.h"

#include "Dialog.h"

#include <QDebug>
#include <QSqlQuery>
#include <QSqlError>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    p_AppDB …
Run Code Online (Sandbox Code Playgroud)

c++ qt

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

对 strlen 在 C 中的工作方式感到困惑

我最近一直在学习C,我遇到了一个strlen的源代码,这真的让我很困惑,我不得不在其他地方查找它,但还不能真正理解它。

斯特伦:

#include <stdio.h>

int strlen(const char *str)
{
    const char* eos = str; // 1

    while (*eos++); // 2

    return (eos - str - 1); // 3
}

int main()
{
    int len = strlen("Hello");

    printf("Len: %d" , len);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么我们使用局部变量 eos 以及为什么我们在空 while 循环中使用它,然后从 strlen 函数返回最后一行?

c c-strings strlen pointer-arithmetic

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