TreeView в Drawer
Как добавить TreeView в Drawer на Flutter? И должен быть DrawerHeader.
Или какой элемент можно использовать как TreeView?
Этот код не работает
import 'package:flutter/material.dart';
import 'package:flutter_treeview/tree_view.dart';
void main() => runApp(USU());
TreeView tree = TreeView(
controller: TreeViewController(children: [
Node(key: "1", label: "Item1", children: [
Node(key: "1.1", label: "Item1.1"),
]),
]),
);
class USU extends StatelessWidget {
@override
Widget build(BuildContext context) {
MaterialApp window = new MaterialApp(
home: Scaffold(
appBar: AppBar(),
drawer: Drawer(
child: ListView(
children: [
DrawerHeader(child: Text("Drawer")),
tree,
],
),
)),
debugShowCheckedModeBanner: false,
);
return window;
}
}
Ответы (1 шт):
Автор решения: MiT
→ Ссылка
Из-за того что flutter_treeview использует для своей отрисовки ListView, у вас получался ListView в ListView (из-за этого был конфликт). Для того чтобы решить конфликт добавим shrinkWrap: true (убирает ограничения по размеру) и physics: ClampingScrollPhysics() (прокрутка внутри содержимого) в TreeView (второй ListView):
import 'package:flutter/material.dart';
import 'package:flutter_treeview/tree_view.dart';
void main() => runApp(USU());
class USU extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
appBar: AppBar(),
drawer: Drawer(
child: ListView(
children: [
DrawerHeader(child: Text("Drawer")),
TreeView(
shrinkWrap: true,
physics: ClampingScrollPhysics(),
controller: TreeViewController(children: [
Node(key: "1", label: "Item1", children: [
Node(key: "1.1", label: "Item1.1"),
]),
]),
),
],
),
),
),
);
}
}
