跳到主要内容

控件和主题增强

· 阅读需 6 分钟
Henri Ndonko
Flet 贡献者和维护者

在发布 Flet 0.21.0 一个多月后,我们很高兴地宣布发布 Flet 0.22.0。

此版本带来了许多增强、错误修复和弃用功能:

增强功能

这是本次发布的主要关注点之一。我们进行了两种类型的增强:

控件增强

我们遍历了现有控件的长列表,并在可能的情况下公开了更多属性 - PR #2882。这将为您提供更多对 Flet 控件的控制,以便在您的优秀应用程序中使用。

以下是完整列表:

  • AppBar: elevation_on_scroll, exclude_header_semantics, force_material_transparency, is_secondary, shadow_color, surface_tint_color, clip_behavior, title_spacing, toolbar_opacity, title_text_style, toolbar_text_style, shape
  • AlertDialog: action_button_padding, clip_behavior, icon_padding, shadow_color, surface_tint_color
  • Banner: content_text_style, margin, elevation, divider_color, shadow_color, surface_tint_color, on_visible
  • CupertinoListTile: leading_size, leading_to_title
  • CupertinoSegmentedButton: click_color
  • CupertinoSwitch:on_label_color, off_label_color
  • CupertinoTimerPicker: item_extent
  • Chip: surface_tint_color, color, click_elevation, clip_behavior, visual_density, border_side
  • Divider: leading_indent, trailing_indent
  • ExpansionTile: dense, enable_feedback, visual_density
  • Card: clip_behavior, is_semantic_container, show_border_on_foreground, variant
  • Checkbox: border_side, semantics_label, shape, splash_radius, is_error, visual_density, mouse_cursor
  • CircleAvatar: on_image_error
  • DataTable: clip_behavior
  • DatePicker: on_entry_mode_change
  • Draggable: on_drag_complete, on_drag_start
  • DragTarget: on_move
  • Dropdown: fill_color, hint_content, icon_content, elevation, item_height, max_menu_height, icon_size, enable_feedback, padding, icon_enabled_color, icon_disabled_color, on_click
  • ElevatedButton: clip_behavior
  • FloatingActionButton: clip_behavior, enable_feedback, focus_color, foreground_color, disabled_elevation, elevation, focus_elevation, highlight_elevation, hover_elevation, mouse_cursor
  • GridView: cache_extent, clip_behavior, semantic_child_count
  • IconButton: alignment, disabled_color, focus_color, enable_feedback, hover_color, padding, splash_color, splash_radius, focus_color, mouse_cursor, visual_density
  • Image: exclude_from_semantics, filter_quality
  • ListTile: enable_feedback, horizontal_spacing, min_leading_width, min_vertical_padding, selected_color, selected_tile_color, style, title_alignment, icon_color, text_color, shape, visual_density, mouse_cursor, title_text_style, subtitle_text_style, leading_and_trailing_text_style
  • ListView: cache_extent, clip_behavior, semantic_child_count
  • NavigationBar: animation_duration, overlay_color
  • NavigationDrawerDestination: bgcolor
  • NavigationDestination: bgcolor
  • NavigationRail: selected_label_text_style, unselected_label_text_style
  • NavigationRailDestination: indicator_color, indicator_shape
  • Option: alignment, on_click
  • OutlinedButton: clip_behavior
  • Page: locale_configuration
  • PopupMenuItem: height, padding, mouse_cursor
  • PopupMenuButton: bgcolor, clip_behavior, elevation, enable_feedback, icon_color, shadow_color, surface_tint_color, icon_size, padding, splash_radius, shape, on_open, on_cancel
  • ProgressBar: border_radius, semantics_label, semantics_value
  • ProgressRing: semantics_label, semantics_value, stroke_cap, stroke_align
  • Radio: focus_color, hover_color, overlay_color, splash_radius, toggleable, visual_density, mouse_cursor
  • SearchBar: keyboard_type, view_surface_tint_color, autofocus
  • SelectionArea: on_change
  • Slider: interaction, overlay_color, mouse_cursor, secondary_track_value, secondary_active_color
  • Stack: alignment, fit
  • SnackBar: clip_behavior, shape, on_visible, action_overflow_threshold
  • Switch: hover_color, splash_radius, overlay_color, track_outline_color, mouse_cursor
  • Tabs: divider_height, enable_feedback, indicator_thickness, is_secondary, mouse_cursor, clip_behavior
  • TextField: fill_color, hover_color
  • TimePicker: orientation, on_entry_mode_change
  • Tooltip: enable_tap_to_dismiss, exclude_from_semantics
  • VerticalDivider: leading_indent, trailing_indent

如果您觉得有些功能缺失且需要添加,请随时告诉我们。

查看我写的关于 Page.locale_configuration 的文章这里

主题增强

用于应用程序主题设置的 Theme 类在浅色和深色模式下得到了进一步增强。 引入了许多新主题 - PR #2955

查看主题指南 这里

Rive 动画

Rive 是一个非常流行的实时交互设计和动画工具。 新引入的 Rive 控件允许您在应用程序中加载和可视化任何 Rive 动画。

动画的来源 (Rive.src) 可以是本地资源文件或 URL - 如常所述,这完全取决于你的需求。

父控件

根据 #952 的请求,已添加访问任何控件父级的功能:Control.parent

阅读更多内容 这里

错误修复

成功修复了以下问题:

  • #2560 - Dropdown.bgcolor 未得到视觉上的尊重
  • #2740 - CircleAvatar 无法与本地资产图像一起使用
  • #2781 - Linux 上引发了 'FletSocketServer' 错误
  • #2826 - PopupMenuItem.data 未得到尊重
  • #2839 - ExpansionTile.initially_expanded 无视觉效果
  • #2867 - PopupMenuButton 始终显示“显示菜单”工具提示
  • 在某些 Python 版本上,您可能会看到 RuntimeError('Event loop is closed'),通常在关闭应用程序窗口时显示。Python-dev 团队最近修复了这一 asyncio 相关的问题,但该修复仅存在于 2024 年发布的版本中。因此,如果您遇到此问题,请下载最新的 Python 版本之一并替换您环境中使用的版本。

特别感谢 Flet 动态社区报告他们遇到的所有问题。我们将继续努力解决剩余的问题。

弃用

如前面在有关 Flet v0.21.0 的 公告 中提到的,所有弃用将在版本 1.0 中完全从 API 中删除 - 因此您有足够的时间来更新您的应用程序。

您无需完全记住哪些内容已弃用,因为我们添加了 DeprecationWarnings,它们将直接显示在您的控制台中(不会破坏您的应用程序)。

文档

Flet 文档已重新组织,以便于导航(特别是对于初学者/新用户)。

升级到 Flet 0.22.0,测试您的应用程序,并告诉我们您对新增功能的看法。 如果您有任何问题,请加入 Flet Discord 服务器 或在 Flet GitHub 讨论 中创建一个新主题。

祝您使用 Flet 愉快!