Fyne es un libre y de código abierto multiplataforma widget toolkit para la creación de interfaces gráficas de usuario (GUIs) a través de escritorio y plataformas móviles. Fyne usa OpenGL para proporcionar gráficos multiplataforma. Está inspirado en los principios de Material Design para crear aplicaciones que se vean y se comporten de manera consistente en todas las plataformas. [2] Tiene licencia según los términos de la Licencia BSD de 3 cláusulas , que respalda la creación de aplicaciones gratuitas y propietarias . En diciembre de 2019, Fyne se convirtió en el kit de herramientas de GUI más popular para Go, según el recuento de estrellas de GitHub [3]y, a principios de febrero de 2020, se convirtió en el proyecto número 1 en los rangos de tendencia de GitHub. [4]
Autor (es) original (es) | Andrew Williams |
---|---|
Desarrollador (es) | Andrew Williams, Charles Daniels, Jacob Alzén, Luca Corbo, Pablo Fuentes, Steve O'Connor, Stephen Houston, Stuart Scott, Tilo Prütz |
Versión inicial | 5 de febrero de 2018 |
Lanzamiento estable | 2.0.2 / 1 de abril de 2021 [1] |
Escrito en | Ir |
Sistema operativo | Linux , similar a Unix , macOS , Windows , IOS , Android (sistema operativo) |
Tipo | Kit de herramientas de widgets |
Licencia | Nueva licencia BSD |
Sitio web | fyne |
Desarrollo
Actualmente, Fyne es desarrollado por un equipo de voluntarios y cuenta con el apoyo de alrededor de 40 colaboradores. [5] Los miembros de este grupo también trabajan en el proyecto FyneDesk para crear un nuevo entorno de escritorio Linux . [6]
El kit de herramientas de Fyne está escrito principalmente en Go . [7] El equipo se centra en API limpias y sigue los principios del Código Limpio para mantener la capacidad de mantenimiento del proyecto. [8] Todos los proyectos de Fyne se prueban continuamente para comprobar la corrección, la estabilidad, el formato y la documentación. [9] [10]
Ejemplo
El código requerido para una aplicación simple de "Hola mundo" es mínimo, como sigue:
paquete principalimportar ( "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/container" "fyne.io/fyne/v2/widget" )func main () { a : = aplicación . Nuevo () w : = a . NewWindow ( "Hola" ) hola : = widget . NewLabel ( "Hola Fyne!" ) W . SetContent ( contenedor . NewVBox ( hola , widget . NewButton ( "¡Hola!" , Func () { hola . SetText ( "Bienvenido :)" ) }), )) w . ShowAndRun () }
Para crear esta aplicación, necesitará el lenguaje Go y un compilador C instalado, así como un controlador de gráficos que admita OpenGL . Se puede construir y ejecutar usando el comando: $ go run main.go
Diseño
El diseño de la API de Fyne y los componentes de la interfaz de usuario sigue un proceso cuidadoso para garantizar la simplicidad. [11] El kit de herramientas Fyne está construido en varias capas, cada una en paquetes separados. Las capas notables incluyen: [12]
API
API , o interfaz de programación de aplicaciones, es una interfaz o protocolo que permite la comunicación entre diferentes partes del software. Fyne tiene una API autodocumentada que también es extensible, lo que da como resultado la capacidad de cada desarrollador para crear herramientas personalizadas únicas para su proyecto que se combinarán con Fyne.
Gráficos vectoriales
El uso de gráficos vectoriales para pintar la interfaz de usuario proporciona un método para adaptarse a diferentes dispositivos y tamaños de pantalla sin perder la fidelidad de la imagen. Esto permite que el programador solo necesite crear la interfaz de usuario una vez y se verá como se esperaba en cualquier dispositivo.
Jerarquía
Lienzo
Canvas contiene todo el contenido de una ventana que va desde la pantalla completa hasta un grupo de CanvasObjects.
CanvasObject
CanvasObjects son los que realmente se renderizan en la pantalla, como Text, Rectangle, Line. Los objetos almacenan información de tamaño, posición y color para el proceso de renderizado.
Envase
Los contenedores son grupos de CanvasObjects, cada contenedor puede especificar un diseño que contendrá el tamaño y la posición de sus componentes secundarios. Los diseños ayudan al desarrollador a organizar los componentes de una manera que responda al tamaño del contenedor o de la ventana, con varios tipos de diseño proporcionados, incluidos Borde, Centro y Cuadrícula.
Widget
Todos los componentes de una ventana en un CanvasObject son widgets que contienen elementos de interfaz de usuario estándar. Los widgets de Fyne incluyen, entre otros, elementos básicos de la interfaz de usuario como: Botón, Verificación, Formulario, Hipervínculo, Etiqueta, Radio, Seleccionar y Barra de herramientas, así como widgets de contenedor como AppTabs y Split. Desde 1.4, existen widgets de recopilación adicionales que proporcionan una presentación de alto rendimiento de datos grandes en una vista de Lista, Tabla o Árbol. Todos los widgets de la interfaz de usuario integrados garantizan que los aspectos estándar de la interactividad de la interfaz de usuario actúen de forma predecible y esperada en todas las aplicaciones. Esto ayuda a mejorar la calidad de los programas mientras ayuda al programador al eliminar la necesidad de que ellos mismos creen estas herramientas.
Paquetes
Todos los componentes de Fyne se dividen en paquetes y luego se conectan a través de la API para crear una aplicación GUI final. Además de los paquetes de lienzo, diseño y widgets, los paquetes notables incluyen:
- Paquete de aplicación, que es el punto de entrada principal para la aplicación, que administra la comprensión del tipo de dispositivo en el que se ejecuta la aplicación y garantiza que el código se ejecutará como se espera en ese dispositivo.
- El paquete de prueba que permite el desarrollo basado en pruebas para validar la propia GUI funciona como se esperaba.
Usar
El proyecto más grande que utiliza actualmente el kit de herramientas Fyne es el proyecto FyneDesk, un entorno de escritorio completo para Linux. [13]
Hay muchas otras aplicaciones que se están construyendo usando el kit de herramientas, aquellas que son de código abierto se pueden encontrar en un sitio web de lista de aplicaciones [14] administrado por el proyecto.
Muchas empresas están utilizando el kit de herramientas de Fyne para agregar rápidamente una interfaz gráfica de usuario a las herramientas de línea de comandos que ya han creado con Go.
Lanzamientos
- 2.0 - Enlace de datos, repositorios de almacenamiento y animación [15]
- Enlace de datos agregado para mantener los widgets sincronizados con las fuentes de datos
- Se agregó la API de repositorio de almacenamiento para la abstracción del almacén de archivos, agregar archivos e implementaciones en memoria
- Se agregó una API de animación y utilícela para varias animaciones de interfaz de usuario.
- API de tema actualizado y elementos visuales con rediseño para componentes de entrada, selección y formulario
- Agregar soporte de desplazamiento y pestañas a Entry
- Se eliminaron muchas API y tipos obsoletos y se movió el sistema de coordenadas de int a float32
- 1.4 - Widgets de colecciones y actualización de temas [16]
- Widgets de tarjeta, elemento de archivo, lista, separador, tabla y árbol agregados
- Cuadro de diálogo ColorPicker
- Selección de color primario por parte del usuario
- Agregar validación de entrada
- 1.3 - Cuadros de diálogo de archivos [17]
- Abrir archivos y guardar cuadros de diálogo
- Soporte de notificaciones agregado
- Se agregaron widgets Accordion, TextGrid y SplitContainer
- Soporte de ajuste de texto
- Tipo de URI y controladores para acceso a datos multiplataforma
- 1.2 - Soporte móvil [18]
- Adición de soporte móvil (iOS y Android)
- Adición de soporte para dispositivos Raspberry Pi (y otros dispositivos OpenGL ES)
- Se introdujo BaseWidget para simplificar la creación de widgets personalizados
- 1.1 - Lanzamiento de funciones [19]
- MenuBar, PopUpMenu, Seleccionar widgets agregados
- Gradiente primitivo agregado y sombras introducidas
- Soporte agregado para la selección de texto
- Soporte para deshabilitar widgets
- Tab / Shift-Tab introducido para rotar elementos enfocados
- 1.0 - Primera versión importante [20]
- API de lienzo introducida para primitivas de dibujo
- Se introdujo la API de widget que incluye caja, botón, verificación, entrada, formulario, grupo, hipervínculo, icono, etiqueta, barra de progreso, radio, desplazamiento, contenedor de tabulaciones y barra de herramientas.
- Temas claros y oscuros para la interfaz de usuario
- Soporte para sistemas operativos Linux, macOS y Windows
Crítica
El número 299 de Golang Weekly señaló el nuevo soporte móvil del proyecto Fyne, pero sugirió que la estética del diseño era menos Material Design y más "generalmente Linux-y". [21]
Referencias
- ^ "No tonto de abril, esto es un montón de útiles correcciones de errores" . github.com . 2021-04-01.
- ^ "Escala y geometría" .
- ^ Fyne [@Fyne_io] (19 de diciembre de 2019). "Estamos muy emocionados de anunciar que Fyne es ahora el kit de herramientas de GUI más popular * para Go! Buenas noticias y un gran hito :). Ahora necesitamos descubrir cómo llevar la alegría de Fyne a la comunidad de codificación más amplia. [*] Según el recuento de Stargazer de GitHub ⭐️ #golang #winning #future " (Tweet) . Consultado el 7 de enero de 2021 , a través de Twitter .
- ^ Fyne [@Fyne_io] (11 de febrero de 2020). "¡Oh, wow, el proyecto @Fyne_io se encuentra actualmente en el puesto # 1 en la lista de tendencias de GitHub! T.co/oeRtXklEK9 #congratulations #goland #gui #trending t.co/HMy1TpJ3u5" (Tweet) . Consultado el 7 de enero de 2021 , a través de Twitter .
- ^ "Colaboradores de fyne-io / fyne · GitHub" . 2020-02-25.
- ^ Houston, Stephen [@stephenmhouston] (31 de diciembre de 2019). "Estoy muy orgulloso de lo lejos que hemos llegado con este escritorio en menos de un año de trabajo. Es una experiencia realmente excelente y muy agradable estéticamente. ¡Considere usarlo si es un usuario de #linux! #Fyne #golang #go #linuxdesktop #desktop t.co/jKqWriYrIG " (Tweet) . Consultado el 7 de enero de 2021 , a través de Twitter .
- ^ "Usos inusuales para Go: GUI (Go Time # 116)" .
- ^ "fyne / CONTRIBUTING.md en master · fyne-io / fyne · GitHub" . 2020-02-25.
- ^ "Fyne.io - Travis CI" .
- ^ "Coveralls.io - Historial de cobertura de prueba y estadísticas" .
- ^ "El cuidadoso proceso detrás de la simplicidad de Fyne" .
- ^ https://www.youtube.com/watch?v=jbsYrrNiqAs
- ^ "Un entorno de escritorio completo para Linux / Unix usando Fyne: Fyne-io / Desktop" . 2020-02-24.
- ^ "Listado de aplicaciones Fyne" .
- ^ "¡El enlace de datos, los repositorios de almacenamiento y la animación llevan a Fyne al siguiente nivel! · Fyne-io / fyne · GitHub" . 2021-01-25.
- ^ "Un tema pulido y nuevos widgets de colecciones encabezan nuestra versión 1.4 · fyne-io / fyne · GitHub" . 2020-11-09.
- ^ "¡La versión 1.3 solo 1000 se confirma más tarde! · Fyne-io / fyne · GitHub" . 2020-11-09.
- ^ "La versión 1.2 trae soporte móvil · fyne-io / fyne · GitHub" . 2020-02-25.
- ^ "Release v1.1 feature release · fyne-io / fyne · GitHub" . 2020-02-25.
- ^ "Lanzamiento de la primera versión importante de Fyne · fyne-io / fyne · GitHub" . 2020-02-25.
- ^ "Golang Weekly Issue 299: 14 de febrero de 2020" .
Bibliografía
- Williams, Andrew (25 de febrero de 2019), Desarrollo práctico de aplicaciones GUI en Go (1ª ed.), Packt , ISBN 978-1-78913-841-2
- Schilli, Mike (1 de noviembre de 2019), Linux Magazine 229 - Directo al grano , Linux New Media
- Williams, Andrew (25 de enero de 2021), Creación de aplicaciones GUI multiplataforma con Fyne (1ª ed.), Packt , ISBN 978-1-80056-316-2
enlaces externos
- Página web oficial
- Tour de Fyne
- Guías para desarrolladores
- Documentación de GoDoc