我在一个小应用程序中使用 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) 我想构建一个在鼠标悬停时显示并显示元素的菜单:类别:-子类别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) 我尝试使用 Firebase Auth 进行电话身份验证,一切都已设置完毕,并且我在我的应用程序上收到一条短信,但它在短信正文底部不包含 11 个字符的哈希值,因此我无法使用自动检索功能。我设置了 SHA-1 和 SHA-256 以及所有内容,但我得到的是我的 firebase 项目的 URL,而不是哈希代码。
我做错了什么吗?
我正在尝试 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 制作一个应用程序,它定期向我的服务器发送 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) 我们刚刚转移到 .NET,我们正在尝试使用 C#/.NET 重新创建我们的一个旧项目,我们听说 .NET Core 是新项目的方法,我们对使用 WinForms 非常感兴趣,所以我一直在尝试 Visual Studio 2019 预览版(16.5.0 预览版 2.0),但我注意到并非所有控件都显示在设计器中(我知道设计器刚刚添加到预览中),所以我尝试了在 Form1.designer.cs 上手动添加控件,但我不确定这是否是正确的方法,或者我们应该等待更成熟的版本还是只使用 .NET Framework?PS:如果 .NET Core 更支持 WPF,我们也可以使用 WPF。
谢谢
我有一个绑定到 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) 长期以来,我一直在使用旧的 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,我遇到了一个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 函数返回最后一行?