The following was an attempt to create a UI library where you could instantiate objects with a Flutter-like syntax. However, simply creating UI is not enough, and therefore I am in the process of doing a full rewrite of Robin to include bindings, state, mappings, and such. A new topic will be created for the new release as it is a full rewrite & will most likely not be backwards-compatible.
About
Robin is a declarative UI library that allows you to programmatically create UI in a syntax much like Flutter (a Dart UI framework).
Docs
Expand
To Get A Component
local TextButton = Robin.Components['TextButton']
To Use Components (mounting)
local ScrollingFrame= Robin.Components['ScrollingFrame']
local TextButton = Robin.Components['TextButton']
Robin.mount(gui, ScrollingFrame{
BackgroundColor3 = Color3.fromRGB(83, 255, 109),
Children = {
TextButton{
-- Properties
Text = "Click me!",
-- Events
[Robin.Events.MouseEnter] = function()
print("Hello world!")
end
}
}
})
Links
Roblox Model: https://www.roblox.com/library/9361405403/Robin
GitHub Repo: https://github.com/R0bl0x10501050/Robin
Example Usage
local Robin = require(9361405403)
local Players = game:GetService("Players")
local plr = Players.LocalPlayer
local gui = plr.PlayerGui:WaitForChild("PlayGui")
local ScrollingFrame = Robin.Components['ScrollingFrame']
local Frame = Robin.Components['Frame']
local TextLabel = Robin.Components['TextLabel']
local TextButton = Robin.Components['TextButton']
Robin.mount(gui, ScrollingFrame{
BackgroundColor3 = Color3.fromRGB(83, 255, 109),
Children = {
Frame{
BorderSizePixel = 5,
Children = {
TextLabel{
Text = "Hello world!",
[Robin.Events.MouseEnter] = function()
print("Hovered!")
end,
}
}
},
TextButton{
Text = "Click me!"
}
}
})
Results:
Happy UI-making!