因此,我最近开始学习如何将 MediatR 库与 ASP.NET Core Web API 一起使用,但我不确定当对不存在的资源发出 DELETE/PUT/PATCH 请求时如何返回 NotFound()。
如果我们以 DELETE 为例,这是我的控制器操作:
[HttpDelete("{id}")]
public async Task<IActionResult> Delete(int id)
{
await Mediator.Send(new DeleteCourseCommand {Id = id});
return NoContent();
}
Run Code Online (Sandbox Code Playgroud)
命令:
public class DeleteCourseCommand : IRequest
{
public int Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
命令处理程序:
public class DeleteCourseCommandHandler : IRequestHandler<DeleteCourseCommand>
{
private readonly UniversityDbContext _context;
public DeleteCourseCommandHandler(UniversityDbContext context)
{
_context = context;
}
public async Task<Unit> Handle(DeleteCourseCommand request, CancellationToken cancellationToken)
{
var course = await _context.Courses.FirstOrDefaultAsync(c => c.Id == …Run Code Online (Sandbox Code Playgroud) 我已经成功地达到了一个点,我有一个AnimatedList将在新添加的项目中滑动的点。包装我的列表项的小Dismissible部件控制删除动画。我的问题是如何添加某种动画曲线,以便SlideTransition我可以控制新列表项滑入时的显示方式。这是我到目前为止的位置:
@override
Widget build(BuildContext context) {
final checklists = Provider.of<Checklists>(context);
return AnimatedList(
key: listKey,
initialItemCount: checklists.lists.length,
itemBuilder: (ctx, i, animation) {
return SlideTransition(
position: CurvedAnimation(parent: ).drive(child) // <- this line needs changing
child: _buildListItem(checklists.lists[i], i),
);
},
);
}
Run Code Online (Sandbox Code Playgroud)
我不知道该如何处理这个position争论。SlideTransition以前我只是使用标准
animation.drive(Tween(begin: Offset(0.2, 0), end: Offset(0.0, 0))),
Run Code Online (Sandbox Code Playgroud)
效果很好,但缺乏曲线轻松感。有任何想法吗?
为了清楚起见,编辑 这里是完整的 .dart 文件以及我从父小部件插入新项目的位置:
GlobalKey<AnimatedListState> recentListsAnimationKey = GlobalKey();
class RecentLists extends StatefulWidget {
@override
_RecentListsState createState() => _RecentListsState();
}
class _RecentListsState extends State<RecentLists> …Run Code Online (Sandbox Code Playgroud) 我正在使用 Provider 包来管理我的应用程序业务逻辑,但我遇到了一个问题,我的整个 ListView 正在重建而不是单个 ListTile。这是让您更好地理解的用户界面:
目前,如果我滚动到列表底部,点击最后一个项目的复选框,我看不到复选框切换的动画,滚动会跳到屏幕顶部,因为整个小部件已经重建。如何使用 Provider 以便仅重建单个 ListTile 而不是列表中的每个项目? 下面是一些相关的代码:
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MultiProvider(
child: MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Checklist',
theme: ThemeData(
brightness: Brightness.light,
primaryColor: Colors.indigo[500],
accentColor: Colors.amber[500],
),
home: ChecklistHomeScreen(),
),
providers: [
ChangeNotifierProvider(
create: (ctx) => ChecklistsProvider(),
),
],
);
}
}
Run Code Online (Sandbox Code Playgroud)
class ChecklistHomeScreen extends StatefulWidget {
@override
_ChecklistHomeScreenState createState() => _ChecklistHomeScreenState();
}
class _ChecklistHomeScreenState extends State<ChecklistHomeScreen> {
void createList(BuildContext context, String listName) {
if (listName.isNotEmpty) { …Run Code Online (Sandbox Code Playgroud)