Flutter 窗口、多窗口和去除标题栏

问题描述 投票:0回答:1

我正在制作颤动窗口应用程序。需要多个窗口。 我已经制作了新窗口

desktop_multi_window: ^0.2.0
包。并使用
window_manager: ^0.3.7
包隐藏主窗口的标题栏。

但是从

window_manager
设置不会隐藏新窗口的标题栏。有没有办法从新窗口中删除标题栏?也许flutter有默认设置?

目前我正在使用

flutter 3.13.6

是否有另一种方法来创建新窗口并隐藏标题栏。请告诉我。

这是最小的示例代码。

import 'dart:convert';
import 'package:desktop_multi_window/desktop_multi_window.dart';
import 'package:flutter/material.dart';
import 'package:window_manager/window_manager.dart';

Future<void> main(List<String> args) async {
  WidgetsFlutterBinding.ensureInitialized();
  if (args.firstOrNull == 'multi_window') {
    final windowId = int.parse(args[1]);
    final argument = args[2].isEmpty
        ? const {}
        : jsonDecode(args[2]) as Map<String, dynamic>;
    runApp(SubWindow(
      windowController: WindowController.fromWindowId(windowId),
      args: argument,
    ));
  } else {
    await windowManager.ensureInitialized();

    WindowOptions windowOptions = const WindowOptions(
      size: Size(400, 400),
      center: true,
      titleBarStyle: TitleBarStyle.hidden,
    );
    windowManager.waitUntilReadyToShow(windowOptions, () async {
      await windowManager.show();
      await windowManager.focus();
    });
    runApp(const MyApp());
  }
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Example code',
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        body: ElevatedButton(
          onPressed: () async {
            final window = await DesktopMultiWindow.createWindow(jsonEncode(
                {"arg1": 1}
            ));
            window
              ..setFrame(const Offset(0, 0) & const Size(400, 600))
              ..center()
              ..show();
          },
          child: const Text('Show new window'),
        ),
      ),
    );
  }
}


class SubWindow extends StatelessWidget {
  const SubWindow({
    Key? key,
    required this.windowController,
    required this.args,
  }) : super(key: key);

  final WindowController windowController;
  final Map args;

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Text("SubWindow"),
    );
  }
}
flutter dart titlebar multi-window
1个回答
0
投票

我也有同样的需求,请问有解决办法吗?

© www.soinside.com 2019 - 2024. All rights reserved.