我是 flutter 的新手,当我想在 InitState 中调用我的上下文时,它会抛出一个错误:这是关于
BuildContext.inheritFromWidgetOfExactType
但后来我使用了 didChangeDependencies 并且它可以正常工作。
现在我有两个问题:
1- 为什么在 initState 中调用我们的上下文不起作用,但在从 didChangeDependencies 调用时却起作用?(因为正如我在官方文档中读到的那样This method is also called immediately after [initState],它们都将在构建方法之前被调用。)
2- 为什么我们可以在 build 方法之外访问我们的上下文(因为在那里我们build(BuildContext context)可以使用我们的上下文,但是在 didChangeDependencies 中我们没有类似的东西didChangeDependencies(BuildContext context),所以我们可以从哪里调用上下文来使用它)?
在我的 flutter 应用程序中,我将一些图像存储在缓存目录中,将一些文件存储在应用程序文档目录中,现在我想为我的用户添加删除缓存目录和应用程序目录的可能性,我该如何实现?
是否可以更改底部导航栏项目中路由的转换?我的意思是当你点击 bottomNavigationBar 中的任何项目时,身体会随着自定义动画等漂亮的动画而改变。例如:
class MyCustomRoute<T> extends MaterialPageRoute<T> {
MyCustomRoute({ WidgetBuilder builder, RouteSettings settings })
: super(builder: builder, settings: settings);
@override
Widget buildTransitions(BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child) {
if (settings.isInitialRoute)
return child;
return new FadeTransition(opacity: animation, child: child);
}
}
Run Code Online (Sandbox Code Playgroud) 我拥有的是多个相似且简单dockerfile的
但我想要的是有一个单一的基础dockerfile,我的dockerfiles 将它们的变量传递给它。
在我的情况下, s 之间的唯一区别dockerfile只是它们EXPOSE,所以我认为最好保留一个基础dockerfile,而其他dockerfiles 仅将变量注入到基础中,dockerfile就像模板引擎一样
一个样品dockerfile:
FROM golang:1.17 AS builder
WORKDIR /app
COPY . .
RUN go mod download
RUN go build -o /bin/app ./cmd/root.go
FROM alpine:latest
WORKDIR /bin/
COPY --from=builder /bin/app .
EXPOSE 8080
LABEL org.opencontainers.image.source="https://github.com/mohammadne/bookman-auth"
ENTRYPOINT ["/bin/app"]
CMD ["server", "--env=dev"]
Run Code Online (Sandbox Code Playgroud) 我想创建一条类似的路径:
但实际结果边框并不好:
现在我想知道如何使用 ClipPath 实现完全圆角。
代码是:
class MyClipper extends CustomClipper<Path> {
@override
Path getClip(Size size) {
final path = Path();
path.moveTo(size.width, 0);
path.lineTo(size.width, size.height);
path.lineTo(15, size.height);
path.quadraticBezierTo(0, size.height / 2, 15, 0);
path.lineTo(size.width, 0);
return path;
}
@override
bool shouldReclip(CustomClipper<Path> oldClipper) {
return true;
}
}
Run Code Online (Sandbox Code Playgroud)