Files
Hippy/renderer/voltron/lib/controller/pull_header.dart
LiaoZhibin f93acab9e0 test(voltron): add unit tests for voltron renderer (#2504)
* test(voltron): add unit tests for voltron render

* test(voltron): add unit tests for voltron render

* test(voltron): fix test

* test(voltron): add test workflow

* test(voltron): test workflows

* test(voltron): update tests

* docs(voltron): add copyright header

* docs(voltron): add copyright header

* test(voltron): add build test workflow

* docs(voltron): update the year of copyright header

* test(voltron): change workflow file name

* fix(voltron): fix ios build error
2022-10-10 18:00:55 +08:00

90 lines
2.6 KiB
Dart

//
// Tencent is pleased to support the open source community by making
// Hippy available.
//
// Copyright (C) 2022 THL A29 Limited, a Tencent company.
// All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
import 'package:flutter/widgets.dart';
import '../common.dart';
import '../controller.dart';
import '../render.dart';
import '../viewmodel.dart';
import '../widget.dart';
class ListPullHeaderViewController
extends BaseGroupController<ListPullHeaderViewModel> {
static const String kClassName = "PullHeaderView";
static const String collapsePullHeader = "collapsePullHeader";
static const String collapsePullHeaderWithOptions =
"collapsePullHeaderWithOptions";
static const String expandPullHeader = "expandPullHeader";
static const String onHeaderReleased = 'headerReleased';
static const String onHeaderPulling = 'headerPulling';
@override
ListPullHeaderViewModel createRenderViewModel(
RenderNode node, RenderContext context) {
return ListPullHeaderViewModel(
node.id,
node.rootId,
node.name,
context,
);
}
@override
Widget createWidget(
BuildContext context,
ListPullHeaderViewModel viewModel,
) {
return ListPullHeaderWidget(viewModel);
}
@override
Map<String, ControllerMethodProp> get groupExtraMethodProp => {};
@override
String get name => kClassName;
@override
void dispatchFunction(
ListPullHeaderViewModel viewModel,
String functionName,
VoltronArray array, {
Promise? promise,
}) {
if (collapsePullHeader == functionName) {
var listViewModel = viewModel.parent;
if (listViewModel is ListViewModel) {
listViewModel.refreshEventDispatcher.refreshComplected();
}
} else if (collapsePullHeaderWithOptions == functionName) {
var listViewModel = viewModel.parent;
if (listViewModel is ListViewModel) {
var timeMap = array.get<VoltronMap>(0);
var time = timeMap?.get<int>('time') ?? 0;
Future.delayed(Duration(milliseconds: time), () {
listViewModel.refreshEventDispatcher.refreshComplected();
});
}
}
}
}