
marc2332/freya
Developer toolsЭта страница переведена автоматически. Технические детали смотрите в оригинале. Открыть оригинал
Кроссплатформенная и невеб-библиотека GUI для 🦀 Rust на базе 🎨 Skia.
Обзор
:предупреждение: Недавно я переписал большую часть Фреи в https://github.com/marc2332/freya/pull/1351,, так что основная ветка сильно отличается от последнего стабильного релиза. Модель компонентов Фрейи позволяет создавать повторно используемые элементы интерфейса, которые автоматически перерисовываются при изменении зависимого от него состояния. Компоненты могут сохранять собственное внутреннее состояние или подписываться на общее состояние, а также генерируют UI в качестве выхода. Любой тип, реализующий черту Component, может быть компонентом, а корневый (приложение) компонент может быть просто функцией. Встроенные примеры включают такие компоненты, как Button и Switch. Freya поставляется с набором компонентов из коробки — от простых, таких как Button, Switch, Slider, до более сложных, таких как VirtualScrollView, Calendar, ColorPicker и т.д. Вы можете проверить все примеры, начинающиеся на component_, в папке примеров. Создайте переходы для цветов, размеров, позиций и других визуальных свойств.
Обзор (машинный перевод)
Веб-сайт | Документация | Discord | Контакты
Freya — это кроссплатформенная, нативная, декларативная GUI-библиотека для Rust 🦀.
Использование 📜
Последний стабильный релиз:
Следующий релиз:
main ветвь:
Пробую 🚀
Обязательно подготовьте Development Setup.
⚠️ Этот репозиторий использует подмодули git, клонирование без
--recurse-submodulesприведёт к тому, что примеры не будут компилироваться.
Уже клонированы без подмодулей? Запустите
git submodule update --init --recursive, чтобы получить их.
Затем запустите пример:
⚠️ Если вы находитесь на Windows с
windows-gnuи получаете ошибки компиляции, возможно, стоит проверить эту проблему.
Компоненты и состояние
Модель компонентов Фрейи позволяет создавать повторно используемые элементы интерфейса, которые автоматически переотображаются при изменении зависимого от него состояния. Компоненты могут сохранять собственное внутреннее состояние или подписываться на общее состояние, а также генерируют UI в качестве выхода. Любой тип, реализующий черт Component, может быть компонентом, а корневой (app) компонент — просто функцией. Встроенные примеры включают компоненты вроде Button и Switch.
Готовые компоненты
Эта страница переведена автоматически. Технические детали смотрите в оригинале.
README
Показан фрагмент оригинального README. Открыть оригинал.
Freya 🦀
Website | Documentation | Discord | Contact
Freya is a cross-platform, native, declarative GUI library for Rust 🦀.
Usage 📜
Latest stable release:
freya = "0.4"
Next release:
freya = "0.5.0-rc.13"
main branch:
freya = { git = "https://github.com/marc2332/freya", branch = "main" }
Trying it out 🚀
Make sure to have Development Setup ready.
⚠️ This repo uses git submodules, cloning without
--recurse-submoduleswill make the examples fail to compile.
git clone --recurse-submodules https://github.com/marc2332/freya.git
cd freya
Already cloned without submodules? Run
git submodule update --init --recursiveto fetch them.
Then run an example:
cargo run --example counter
⚠️ If you happen to be on Windows using
windows-gnuand get compile errors, maybe go check this issue.
Components & State
Freya’s component model lets you create reusable UI elements that automatically re-render when the state they depend on changes. Components can hold their own internal state or subscribe to shared state, and they produce UI as their output. Any type that implements the Component trait can be a component, while the root (app) component can simply be a function. Built-in examples include components like Button and Switch.
fn app() -> impl IntoElement {
let mut count = use_state(|| 4);
let counter = rect()
.width(Size::fill())
.height(Size::percent(50.))
.center()
.color((255, 255, 255))
.background((15, 163, 242))
.font_weight(FontWeight::BOLD)
.font_size(75.)
.shadow((0., 4., 20., 4., (0, 0, 0, 80)))
.child(count.read().to_string());
let actions = rect()
.horizontal()
.width(Size::fill())
.height(Size::percent(50.))
.center()
.spacing(8.0)
.child(
Button::new()
.on_press(move |_| {
*count.write() += 1;
})
.child("Increase"),
Рекомендуемые инструменты
Попробуйте другой запрос или уберите фильтр.
Установка
npx skillfish add marc2332/freya