我有UserContext一个useUser从 导出的钩子src/app/context/user-context.tsx。另外,我有一个 index.tsx 文件,其中src/app/context导出所有子模块。
如果我监视src/app/context/user-context它,但将导入更改为src/app/context我得到:
TypeError: Cannot redefine property: useUser at Function.defineProperty (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
这是为什么?
源代码:
TypeError: Cannot redefine property: useUser at Function.defineProperty (<anonymous>)
Run Code Online (Sandbox Code Playgroud)
// src/app/context/user-context.tsx
export const UserContext = React.createContext({});
export function useUser() {
return useContext(UserContext);;
}
Run Code Online (Sandbox Code Playgroud)
// src/app/context/index.tsx
export * from "./user-context";
Run Code Online (Sandbox Code Playgroud)
我试图从我的一个模块导出服务,但我只得到以下错误:
ERROR Error: Uncaught (in promise):
Error: Can't export value ConfirmDialogService from SharedModule as it was neither declared nor imported!
Run Code Online (Sandbox Code Playgroud)
我的模块如下:
import { NgModule } from "@angular/core";
import { CommonModule } from "@angular/common";
import { FormsModule } from "@angular/forms";
import { RouterModule } from "@angular/router";
import { MaterialModule } from "@angular/material";
import { ConfirmDialogComponent } from './confirm-dialog/confirm-dialog.component';
import { ConfirmDialogService } from './confirm-dialog/confirm-dialog.service';
@NgModule({
imports: [
RouterModule,
CommonModule,
MaterialModule,
FormsModule
],
providers: [
ConfirmDialogService
],
declarations: [
ConfirmDialogComponent
],
exports: …Run Code Online (Sandbox Code Playgroud) 在 RX dart 中,有一种RX.combineLatest使用回调函数组合流结果的方法。问题是它仅在每个流都发出值时才发出值。如果没有,则不会发射。
每当任何流序列发出一个项目时,都使用组合器函数将给定的流合并为单个流序列。 在所有流都发出至少一项之前,流不会发出。
我试图将多个流合并到一个流中进行验证,当流未发出或发出空值时,该验证应发出 false 或 true 。
class FormBloc {
final BehaviorSubject<bool> _result = BehaviorSubject();
final BehaviorSubject<String?> _usernameController = BehaviorSubject();
final BehaviorSubject<String?> _emailController = BehaviorSubject();
// Will only emit if each stream emitted a value
// If only username is emitted valid is not emitted
Stream<bool> get valid$ => Rx.combineLatest2(
_usernameController.stream,
_emailController.stream,
(username, email) => username != null || email != null
);
}
Run Code Online (Sandbox Code Playgroud)
我如何加入这些流,以便在任何流发生变化valid$时发出一个值?
我经常导入cupertino.dart而不是material.dart必须导入小部件,因为它是第一个建议的选项。这不是一个真正的问题,但为了保持一致性,我想阻止导入,cuppertino.dart因此它没有列在导入建议中,只使用widgets.dartormaterial.dart代替。
有没有办法配置 Android Studio 或 Dart Analyzer 以防止cuppertino.dart显示在建议中?
我有一个带有处理程序的元素onClick,可以通过添加pointer-events: none到父级来禁用该元素(父级禁用子级单击)。现在我想测试我的孩子不可点击,我该怎么做?使用userEvent.click抛出错误:
Error: Unable to perform pointer interaction as the element has `pointer-events: none`:
Run Code Online (Sandbox Code Playgroud)
但这正是我想要测试的......
我是新手,目前正在研究 DI。
我正在使用flutter_bloc和provider包装。
flutter_bloc附带一RepositoryProvider,问题IM问自己现在是什么之探源来Provider从provider?
RepositoryProvider存储库有什么特别之处还是只是一种命名策略?
如何在颤动中更改 DropdownButton 的高度。我曾尝试使用 Padding 和 SizedBox,但没有一个真正起作用。
SizedBox 只是增加了容器的大小,而 DropdownButton 被固定在左上角,因此不再居中。填充被忽略或将内容移到按钮之外。
我不想更改下拉叠加层的大小,而是更改按钮本身。
build(BuildContext context) {
return ThemeData(
data: ThemeData(canvasColor: Colors.white),
child: DropdownButton(
items: _items.map((item) => DropdownMenuItem(child: Text(item), value: item)).toList(),
isExpanded: true,
selectedItemBuilder: (_) {
return _items.map<Widget>((String lang) {
return Center(
widthFactor: 1,
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 12),
child: Text(lang, style: TextStyle(color: Colors.black))
),
);
}).toList();
}
)
)
}
Run Code Online (Sandbox Code Playgroud) 我在 Windows 上使用 Docker 并使用以下 docker 文件:
FROM php:7.4-fpm
ARG uid=1000
ARG user=devuser
USER root
# Install system packages
RUN apt-get update && apt-get install -y apt-transport-https && apt-get install -y git curl zip unzip libicu-dev
# Cleanup apt
RUN apt-get clean && rm -rf /var/lib/apt/lists/*
# Install php extensions
RUN docker-php-ext-install pdo_mysql intl iconv
RUN useradd -G www-data,root -u $uid -d /home/$user $user
RUN mkdir -p /home/$user/.composer && chown -R $user:$user /home/$user
# Install composer
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer …Run Code Online (Sandbox Code Playgroud) 对于颜色我们可以使用Color.withOpacity,但是对于渐变不存在这种方法。将不透明度应用于现有渐变上的每种颜色的最简单方法是什么?这可能吗?
我尝试实现自定义扩展,Gradient但这个想法似乎不起作用,因为我不知道它是什么梯度,所以目前我必须为每种类型的梯度实现扩展。
extension LinearGradientExtension on LinearGradient {
/// Applies [opacity] to all colors in gradient and returns a new [LinearGradient]
LinearGradient withOpacity(double opacity) {
return LinearGradient(
colors: _applyOpacity(colors, opacity),
begin: begin,
end: end,
stops: stops,
tileMode: tileMode,
transform: transform,
);
}
}
extension RadialGradientExtension on RadialGradient {
/// Applies [opacity] to all colors in gradient and returns a new [RadialGradient]
RadialGradient withOpacity(double opacity) {
/// ...
}
}
List<Color> _applyOpacity(List<Color> colors, double opacity) {
return colors …Run Code Online (Sandbox Code Playgroud)