retro_form 1.0.3+6
retro_form: ^1.0.3+6 copied to clipboard
A Flutter plugin to implement dynamic form builder from Smartters
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:retro_form/retro_form.dart';
import 'package:retro_form_example/custom_widgets/custom_date_input.dart';
import 'package:retro_form_example/pages/form_page.dart';
import 'package:retro_form_example/pages/home_page.dart';
import 'package:retro_form_example/pages/result_page.dart';
import 'custom_widgets/custom_multi_info_input_element.dart';
import 'custom_widgets/custom_multi_select.dart';
import 'custom_widgets/custom_single_select.dart';
import 'custom_widgets/custom_text_input.dart';
import 'custom_widgets/custom_unit_quantity_input.dart';
import 'custom_widgets/page_header.dart';
import 'custom_widgets/page_layout.dart';
ValueNotifier<ThemeMode> themeMode = ValueNotifier(ThemeMode.system);
void main() {
// RetroFormConfig.clearCache();
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
RetroFormConfig.initialize(
deviceId: "145340564asdyg654hndh",
preloadFormIds: ["0153907983", "9118386227", "5185391060", "6301441529"],
baseUrl: "https://api.forms.smarttersstudio.in",
theme: RetroTheme(
backgroundColor: Color(0xffFEFCFB),
primaryColor: Color(0xff61AEB0),
strokeColor: Colors.black,
borderRadius: 6,
typography: RetroTypography(fontSize: 14),
),
retroWidgets: RetroWidgetsConfig(
multiInfoInputElement: CustomMultiInfoInputElement(),
singleSelectElement: CustomSingleSelect(),
textInputElement: CustomTextInput(),
dateInputElement: CustomDateInput(),
pageHeader: CustomPageHeader(),
unitQuantityElement: CustomUnitQuantityInput(),
pageLayout: CustomPageLayout(),
multipleSelectElement: CustomMultiSelect(),
),
);
super.initState();
}
@override
Widget build(BuildContext context) {
return ValueListenableBuilder<ThemeMode>(
valueListenable: themeMode,
builder:
(context, value, child) => MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
fontFamily: "Isidora",
colorSchemeSeed: Color(0xff61AEB0),
inputDecorationTheme: InputDecorationTheme(
iconColor: Colors.black,
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(6),
borderSide: BorderSide.none,
),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(6),
borderSide: BorderSide.none,
),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(6),
),
disabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(6),
borderSide: BorderSide.none,
),
errorBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(6),
),
),
radioTheme: RadioThemeData(
fillColor: WidgetStateProperty.resolveWith((state) {
if (state.contains(WidgetState.selected)) {
return Colors.white;
}
return Color(0xffD0D0D0);
}),
),
),
darkTheme: ThemeData.dark(useMaterial3: true),
themeMode: value,
onGenerateRoute: (setting) {
log("RESULT ${setting.name} ${setting.arguments}");
if (setting.name == "/result") {
return MaterialPageRoute(
builder: (c) => ResultPage(setting.arguments),
);
}
if (setting.name == "/form") {
return MaterialPageRoute(
builder: (c) => FormPage(setting.arguments as String),
);
}
if (setting.name == "/") {
return MaterialPageRoute(builder: (c) => HomePage());
}
return MaterialPageRoute(builder: (c) => SizedBox());
},
initialRoute: "/",
),
);
}
}