update example project
This commit is contained in:
@@ -4,6 +4,7 @@ import 'dart:math';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_filament/animations/animation_data.dart';
|
||||
|
||||
import 'package:flutter_filament/filament_controller.dart';
|
||||
import 'package:flutter_filament_example/main.dart';
|
||||
import 'package:permission_handler/permission_handler.dart';
|
||||
@@ -27,8 +28,22 @@ class _AssetSubmenuState extends State<AssetSubmenu> {
|
||||
Widget _shapesSubmenu() {
|
||||
var children = [
|
||||
MenuItemButton(
|
||||
closeOnActivate: false,
|
||||
onPressed: () async {
|
||||
Timer.periodic(Duration(milliseconds: 50), (_) async {
|
||||
var entity = await widget.controller
|
||||
.getChildEntity(ExampleWidgetState.assets.last, "Cylinder");
|
||||
await showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return Center(
|
||||
child: Container(
|
||||
color: Colors.white, child: Text(entity.toString())));
|
||||
});
|
||||
},
|
||||
child: const Text('Find Cylinder entity by name')),
|
||||
MenuItemButton(
|
||||
onPressed: () async {
|
||||
Timer.periodic(const Duration(milliseconds: 50), (_) async {
|
||||
await widget.controller.setBoneTransform(
|
||||
ExampleWidgetState.assets.last,
|
||||
"Cylinder",
|
||||
@@ -143,11 +158,40 @@ class _AssetSubmenuState extends State<AssetSubmenu> {
|
||||
return SubmenuButton(menuChildren: children, child: const Text("Shapes"));
|
||||
}
|
||||
|
||||
Widget _geometrySubmenu() {
|
||||
return MenuItemButton(
|
||||
onPressed: () async {
|
||||
await widget.controller.createGeometry([
|
||||
-1,
|
||||
0,
|
||||
-1,
|
||||
-1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
-1,
|
||||
], [
|
||||
0,
|
||||
1,
|
||||
2,
|
||||
2,
|
||||
3,
|
||||
0
|
||||
], "asset://assets/solidcolor.filamat");
|
||||
},
|
||||
child: const Text("Custom geometry"));
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SubmenuButton(
|
||||
menuChildren: [
|
||||
_shapesSubmenu(),
|
||||
_geometrySubmenu(),
|
||||
MenuItemButton(
|
||||
onPressed: () async {
|
||||
ExampleWidgetState.directionalLight = await widget.controller
|
||||
|
||||
@@ -9,11 +9,13 @@ class ControllerMenu extends StatefulWidget {
|
||||
final FilamentController? controller;
|
||||
final void Function(FilamentController controller) onControllerCreated;
|
||||
final void Function() onControllerDestroyed;
|
||||
final FocusNode sharedFocusNode;
|
||||
|
||||
ControllerMenu(
|
||||
{this.controller,
|
||||
required this.onControllerCreated,
|
||||
required this.onControllerDestroyed});
|
||||
required this.onControllerDestroyed,
|
||||
required this.sharedFocusNode});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() => _ControllerMenuState();
|
||||
@@ -21,7 +23,6 @@ class ControllerMenu extends StatefulWidget {
|
||||
|
||||
class _ControllerMenuState extends State<ControllerMenu> {
|
||||
FilamentController? _filamentController;
|
||||
final FocusNode _buttonFocusNode = FocusNode(debugLabel: 'Camera Menu');
|
||||
|
||||
void _createController({String? uberArchivePath}) {
|
||||
if (_filamentController != null) {
|
||||
@@ -57,8 +58,10 @@ class _ControllerMenuState extends State<ControllerMenu> {
|
||||
child: const Text("Create FilamentViewer"),
|
||||
onPressed: _filamentController == null
|
||||
? null
|
||||
: () {
|
||||
_filamentController!.createViewer();
|
||||
: () async {
|
||||
await _filamentController!.createViewer();
|
||||
await _filamentController!
|
||||
.setCameraManipulatorOptions(zoomSpeed: 1.0);
|
||||
},
|
||||
),
|
||||
MenuItemButton(
|
||||
@@ -96,7 +99,7 @@ class _ControllerMenuState extends State<ControllerMenu> {
|
||||
]);
|
||||
}
|
||||
return MenuAnchor(
|
||||
childFocusNode: _buttonFocusNode,
|
||||
childFocusNode: widget.sharedFocusNode,
|
||||
menuChildren: items,
|
||||
builder:
|
||||
(BuildContext context, MenuController controller, Widget? child) {
|
||||
|
||||
@@ -7,8 +7,10 @@ import 'package:flutter_filament_example/menus/rendering_submenu.dart';
|
||||
|
||||
class SceneMenu extends StatefulWidget {
|
||||
final FilamentController? controller;
|
||||
final FocusNode sharedFocusNode;
|
||||
|
||||
const SceneMenu({super.key, required this.controller});
|
||||
const SceneMenu(
|
||||
{super.key, required this.controller, required this.sharedFocusNode});
|
||||
|
||||
@override
|
||||
State<StatefulWidget> createState() {
|
||||
@@ -34,6 +36,8 @@ class _SceneMenuState extends State<SceneMenu> {
|
||||
widget.controller?.hasViewer ?? ValueNotifier<bool>(false),
|
||||
builder: (BuildContext ctx, bool hasViewer, Widget? child) {
|
||||
return MenuAnchor(
|
||||
onClose: () {},
|
||||
childFocusNode: widget.sharedFocusNode,
|
||||
menuChildren: widget.controller == null
|
||||
? []
|
||||
: <Widget>[
|
||||
|
||||
Reference in New Issue
Block a user