mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-05-20 06:16:20 +08:00
119 lines
3.4 KiB
Dart
119 lines
3.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:fluro/fluro.dart';
|
|
import './widget_item.dart';
|
|
import '../routers/application.dart';
|
|
import '../widgets/index.dart';
|
|
import '../model/widget.dart';
|
|
|
|
class WidgetItemContainer extends StatelessWidget {
|
|
final int columnCount; //一行几个
|
|
final List<CommonItem> commonItems;
|
|
// final bool isWidgetPoint;
|
|
|
|
// 所有的可用demos;
|
|
final List widgetDemosList = new WidgetDemoList().getDemos();
|
|
|
|
WidgetItemContainer(
|
|
{Key key,
|
|
@required this.commonItems,
|
|
@required this.columnCount,
|
|
// @required this.isWidgetPoint
|
|
})
|
|
: super(key: key);
|
|
|
|
/// 跳转goup
|
|
void tapToGroup(CategoryComponent cate, BuildContext context) {
|
|
Application.router
|
|
.navigateTo(context, "/category/${cate.token}", transition: TransitionType.inFromRight);
|
|
}
|
|
|
|
/// 跳转到老的widget界面
|
|
void tapToOldWidget(WidgetLeaf leaf, BuildContext context) {
|
|
|
|
String targetName = leaf.name;
|
|
String targetRouter = '/category/error/404';
|
|
widgetDemosList.forEach((item) {
|
|
if (item.name == targetName) {
|
|
targetRouter = item.routerName;
|
|
targetRouter = targetRouter.toLowerCase();
|
|
}
|
|
});
|
|
Application.router.navigateTo(context, targetRouter, transition: TransitionType.inFromRight);
|
|
}
|
|
|
|
/// 跳转到新的标准页
|
|
void tapToStandardPage(WidgetLeaf leaf, BuildContext context) {
|
|
String targetRouter = '/standard-page/${leaf.pageId}';
|
|
Application.router.navigateTo(context, targetRouter, transition: TransitionType.inFromRight);
|
|
}
|
|
|
|
List<Widget> _buildColumns(context) {
|
|
List<Widget> _listWidget = [];
|
|
List<Widget> _listRows = [];
|
|
int addI;
|
|
for (int i = 0, length = commonItems.length; i < length; i += columnCount) {
|
|
_listRows = [];
|
|
for (int innerI = 0; innerI < columnCount; innerI++) {
|
|
addI = innerI + i;
|
|
if (addI < length) {
|
|
CommonItem item = commonItems[addI];
|
|
|
|
|
|
_listRows.add(
|
|
Expanded(
|
|
flex: 1,
|
|
child: WidgetItem(
|
|
title: item.name,
|
|
onTap: () {
|
|
String type = item.type;
|
|
|
|
if (type == "category") {
|
|
return tapToGroup(item as CategoryComponent, context);
|
|
}
|
|
if (type == "widget") {
|
|
WidgetLeaf leaf = item as WidgetLeaf;
|
|
|
|
if (leaf.display == "standard") {
|
|
return tapToStandardPage(leaf, context);
|
|
} else {
|
|
return tapToOldWidget(leaf, context);
|
|
}
|
|
}
|
|
|
|
Application.router
|
|
.navigateTo(context, "/category/error/404", transition: TransitionType.inFromRight);
|
|
},
|
|
index: addI,
|
|
totalCount: length,
|
|
rowLength: columnCount,
|
|
textSize: true ? 'middle' : 'small',
|
|
),
|
|
),
|
|
);
|
|
} else {
|
|
_listRows.add(
|
|
Expanded(
|
|
flex: 1,
|
|
child: Container(),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
_listWidget.add(
|
|
Row(
|
|
children: _listRows,
|
|
),
|
|
);
|
|
}
|
|
return _listWidget;
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return Column(
|
|
children: _buildColumns(context),
|
|
);
|
|
}
|
|
}
|
|
|