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 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 _buildColumns(context) { List _listWidget = []; List _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', textSize: 'middle' ), ), ); } 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), ); } }