document_builder 0.0.7 copy "document_builder: ^0.0.7" to clipboard
document_builder: ^0.0.7 copied to clipboard

A package for creating beautiful privacy policies, user agreements, and more

example/lib/main.dart

import 'package:document_builder/document_builder.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';


void main () {
  runApp(App());
}

class App extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ExampleScreen(),
    );
  }
}

class ExampleScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: SingleChildScrollView(
          child: Container(
              padding: EdgeInsets.all(20),
              child: Document(
                  options: [
                    TitleOptions(text: 'Title your document'),
                    CustomElementOptions(
                        icon: Icon(Icons.account_circle, size: 30,),
                        text: 'The user has the right to be a user'
                    )
                  ],
                  builders: [
                    DocumentBuilder<CustomElementOptions>(
                        builder: (context, options) => CustomElementWidget(options: options)
                    ),
                    DocumentBuilder<TitleOptions>(
                        builder: (context, options) => TitleDoc(options: options)
                    )
                  ]
              )
          ),
        ),
      ),
    );
  }
}


class CustomElementOptions extends ElementOptions {
  final Widget icon;
  final String? text;
  final TextStyle style;
  final EdgeInsets padding;

  CustomElementOptions({
    required this.icon,
    this.text,
    this.style = const TextStyle(
        fontSize: 17,
        fontWeight: FontWeight.w700
    ),
    this.padding = const EdgeInsets.symmetric(vertical: 20)
  });
}

class CustomElementWidget extends StatelessWidget {
  final CustomElementOptions options;

  const CustomElementWidget({super.key, required this.options});

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: options.padding,
      child: Row(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          options.icon,
          SizedBox(width: 10,),
          Expanded(
            child: Text(options.text ?? '',
              style: options.style,
            ),
          )
        ],
      ),
    );
  }
}
2
likes
140
points
47
downloads

Publisher

unverified uploader

Weekly Downloads

A package for creating beautiful privacy policies, user agreements, and more

Homepage

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

flutter

More

Packages that depend on document_builder