DCFlight
🚧 This CLI is Under Development
📌 Key Points
DCFlight in short is a framework that renders actual native UI. Built on top of the flutter engine(Flutter engine here provides us the dart runtime and some utilities. More like Hermes in react native). As seen below DCFlight:
import dcflight
@main
@objc class AppDelegate: DCAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
It diverges from the flutter abstraction for UI rendering and renders the root view that dcflight depends on to render native UI. No platform views and no absurd abstractions. As a bonus you can still render a flutter Widget by using the WidgetToDCFAdaptor without impacting performance.
📝 Dart Example
void main() {
DCFlight.start(app: DCFGo());
}
import 'package:dcf_go/app/components/footer.dart';
import 'package:dcf_go/app/components/user_card.dart';
import 'package:dcf_go/app/store.dart';
import 'package:dcf_go/app/components/top_bar.dart';
import 'package:dcf_primitives/dcf_primitives.dart';
import 'package:dcflight/dcflight.dart';
class DCFGo extends StatefulComponent {
@override
VDomNode render() {
final globalCounter = useStore(globalCounterState);
final counter = useState(0);
return Fragment(
children: [
TopBar(globalCounter: globalCounter, counter: counter),
DCFScrollView(
showsScrollIndicator: true,
style: StyleSheet(backgroundColor: Colors.white),
layout: LayoutProps(
paddingHorizontal: 20,
justifyContent: YogaJustifyContent.spaceBetween,
flex: 1,
width: "100%",
flexDirection: YogaFlexDirection.column,
),
children: [
UserCard(
onPress: () {
print("touchable pressed, maybe state woud change");
print("counter value: ${counter.value}");
print("global counter value: ${globalCounter.state}");
counter.setValue(counter.value + 1);
globalCounter.setState(globalCounter.state + 1);
},
),
UserCard(
onPress: () {
print("touchable pressed, maybe state woud change");
print("counter value: ${counter.value}");
print("global counter value: ${globalCounter.state}");
counter.setValue(counter.value + 1);
globalCounter.setState(globalCounter.state + 1);
},
),
UserCard(
onPress: () {
print("touchable pressed, maybe state woud change");
print("counter value: ${counter.value}");
print("global counter value: ${globalCounter.state}");
counter.setValue(counter.value + 1);
globalCounter.setState(globalCounter.state + 1);
},
),
UserCard(
onPress: () {
print("touchable pressed, maybe state woud change");
print("counter value: ${counter.value}");
print("global counter value: ${globalCounter.state}");
counter.setValue(counter.value + 1);
globalCounter.setState(globalCounter.state + 1);
},
),
],
),
GobalStateCounterComp(),
],
);
}
}
☕ Buy Me a Coffee
Your support fuels the grind. Every contribution keeps this journey alive.
[**buy_me_a_coffee: https://coff.ee/squirelboy360**](https://coff.ee/squirelboy360)
Libraries
- dcflight
- framework/constants/layout/absolute_layout
- framework/constants/layout/layout_properties
- framework/constants/layout/yoga_enums
- framework/constants/style/color_utils
- framework/constants/style/gradient
- framework/constants/style/hit_slop
- framework/constants/style/style_properties
- framework/devtools/hot_restart
- framework/protocol/component_protocol
- framework/protocol/component_registry
- framework/protocol/plugin_protocol
- framework/renderer/interface/interface
- framework/renderer/interface/interface_impl
- framework/renderer/interface/interface_util
- framework/renderer/vdom/component/component
- framework/renderer/vdom/component/component_node
- framework/renderer/vdom/component/dcf_element
- framework/renderer/vdom/component/error_boundary
- framework/renderer/vdom/component/fragment
- framework/renderer/vdom/component/state_hook
- framework/renderer/vdom/component/store
- framework/renderer/vdom/index
- This file serves as a central export point for the VDOM system, allowing easy swapping between implementations.
- framework/renderer/vdom/portal/dcf_portal
- framework/renderer/vdom/portal/dcf_portal_container
- framework/renderer/vdom/portal/dcf_portal_manager
- framework/renderer/vdom/portal/portal_system
- framework/renderer/vdom/vdom
- framework/renderer/vdom/vdom_api
- framework/services/portal_manager
- framework/utilities/flutter_framework_interop
- framework/utilities/screen_utilities
