t_widgets 0.0.1 copy "t_widgets: ^0.0.1" to clipboard
t_widgets: ^0.0.1 copied to clipboard

flutter custom widgets

example/lib/main.dart

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:t_widgets/t_widgets.dart';
import 'package:t_widgets/types/t_loader_types.dart';

final darkNotifier = ValueNotifier<bool>(false);

void main() async {
  await TWidgets.instance.init(
    defaultImageAssetsPath: 'assets/logo.webp',
    isDebugPrint: true,
    getDarkMode: () => darkNotifier.value,
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ValueListenableBuilder(
      valueListenable: darkNotifier,
      builder: (context, value, child) {
        return MaterialApp(
          darkTheme: ThemeData.dark(),
          themeMode: value ? ThemeMode.dark : null,
          home: Home(),
        );
      },
    );
  }
}

class Home extends StatelessWidget {
  const Home({super.key});

  @override
  Widget build(BuildContext context) {
    return TScaffold(
      body: SingleChildScrollView(
        child: Column(
          children: [
            TTextField(),
            TChip(title: Text('hello')),
            TListTileWithDesc(title: 'hello', desc: 'i am desc'),
            TLoader(types: TLoaderTypes.CubeGrid),
            TImageFile(path: '', size: 100),
            TImageUrl(url: '', size: 50),
            TCacheImage(url: '', size: 150),
            // Wrap(
            //   spacing: 5,
            //   runSpacing: 5,
            //   children: TLoaderTypes.getWidgetList(),
            // ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // darkNotifier.value = !darkNotifier.value;
          showCupertinoDialog(
            context: context,
            barrierDismissible: true,
            builder: (context) => AlertDialog(content: Text('hello')),
          );
        },
      ),
    );
  }
}