Widget de painel dinâmico que permite aos seus usuários criarem seus próprios layouts. Redimensionamento, movimentação, redimensionamento/movimentação indireta e reorganização automática são suportados.
Orientação gerada a partir de informações públicas. Apenas para referência.
O pacote de painel fornece um widget dinâmico e configurável pelo usuário para criar layouts personalizáveis. Os usuários podem redimensionar, mover e reorganizar livremente os widgets no painel, com suporte a redimensionamento indireto e reposicionamento automático. Ideal para painéis que exigem personalização interativa, funciona em todas as principais plataformas, incluindo Android, iOS, Web, macOS, Windows e Linux. O pacote é projetado para desenvolvedores que buscam interfaces do usuário flexíveis e responsivas que se adaptem às preferências dos usuários em tempo real.
Casos de uso
Painéis de análise personalizáveis
Interfaces de layout definidas pelo usuário
Painéis administrativos interativos
visualização de dados em tempo real
Aplicações responsivas baseadas em grade
Principais recursos
Reposição de widget por arrastar e soltar
Widgets redimensionáveis com reorganização automática
Suporte a redimensionamento/movimentação indireta
Compatibilidade multiplataforma
Persistência de layout dinâmico
Sistema de grade configurável
Indicado para
Desenvolvedores criando painéis interativos
Aplicativos que exigem interfaces do usuário personalizáveis
Projetos com grades de conteúdo dinâmico
Equipes de frontend focadas na flexibilidade da experiência do usuário
Aplicativos web e móveis que precisam de layouts responsivos
Considerações
Pode exigir otimização de desempenho para grandes quantidades de widgets
A configuração inicial envolve configurar restrições de grade e widget
Opções de estilização embutidas limitadas além do layout básico
Mais adequado para interfaces interativas de médio a grande escala
Requer um manuseio cuidadoso da gestão de estado durante operações de arrasto
README original
Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.
Dynamic dashboard widget that allows your users to create their own layouts. Rezise, move, indirect resize/move, auto re-layout are supported.
Dashboard can be thought of as a dynamic grid. Your users can create their own layouts, add new widgets or remove widgets.
Layout divides the screen into horizontal slots according to the entered value. The aspect ratio of the slots also determine their height. Widgets called DashboardItem are placed in these slots. This layout can be changed later.
Resize
Dashboard Items can be resized both by long pressing on mobile and by holding and moving on desktop/browser.
Move
Dashboard Item locations can be changed by long pressing on mobile or by holding and pulling on desktop/browser.
Slots Changes
With dynamic slot count, you can re-layout window size changes.
>
Storage Delegate
The layout information of the users can be stored in the database or on the local disk.
Define your storage delegate.
classMyItemStorageextendsDashboardItemStorageDelegate{
@overrideFutureOr<List<DashboardItem>> getAllItems(int slotCount) {
// return items from db.
}
@overrideFutureOr<void> onItemsUpdated(
List<DashboardItem> items, int slotCount) {
// save new layouts to db.
}
//[...]
}
Slide to top items initially. Auto relayout places items to top as possible.
slideToTop: true
Before:
>
After:
>
Shrink
Shrink items when re-layout or editing is possible.
Edit Mode Settings
See code comments for edit mode settings parameters.
All is optional.
EditModeSettings(
// animation settings
curve: Curves.easeInOutCirc,
duration: constDuration(milliseconds: 200),
// fill editing item actual size
fillEditingBackground: true,
// space that can be held to resize
resizeCursorSide: 20,
// draw lines for slots
paintBackgroundLines: true,
// shrink items when editing if possible and necessary
shrinkOnMove: true,
// long press to edit
longPressEnabled: true,
// pan to edit
panEnabled: true,
backgroundStyle: constEditModeBackgroundStyle(
fillColor: Colors.red,
lineWidth: 1.5,
lineColor: Colors.black,
// line by vertical space
dualLineHorizontal: true,
// line by horizontal space
dualLineVertical: true));