Hucel_Core

mail address : hucelsoft@gmail.com

youtube : https://www.youtube.com/channel/UC4GTOIiDWEe6jIuXlqSIhQg

Github : https://github.com/HalilUcel14

Linkedin : https://www.linkedin.com/in/halilucel/

Text Theme Mod

Ne İşe Yarar: Context içerisinden doğrudan TextTheme.Headline1 gibi uzantıları ele alabilirsiniz.

  Text(
        'Tested',
        style: context.headLine1,
        );

Error SnackBar

Ne İşe Yarar: Ekranda Error göstermek istediğiniz bilgi ve metinleri hoş bir imaj ile gösterir.

   @override
  ElevatedButtonWithStadiumBorder(
      child: Text(
        _loginConstant.signInButton,
        style: TextStyle(
          fontSize: constraints.maxHeight * 0.05,
        ),
      ),
      onPressed: () => context.snackbar(errorList: [
        'bu bir test mesajıdır ...................aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
        'bu bir test mesajıdır ...................',
        'bu bir test mesajıdır ...................',
        'bu bir test mesajıdır ...................',
      ]), //viewModel.buttonPressed,
      fixedSize: Size(
        constraints.maxWidth * 0.3,
        constraints.maxHeight * 0.13,
      ),
    );

FireStore Get Download Url

Ne İşe Yarar: Fire Store üzerine attığınız dosyaların indirme url linklerini getirir.

   @override
  Widget build(BuildContext context) {
    return ExpandedContainer(
      child: FutureBuilder(
        // 
        future: FirestoreGetDownloadUrl().get(imgUrl),
        //
        builder: (context, AsyncSnapshot snapshot) {
          return myStreamBuilderHelper(
            // My Future or Stream Helper
            snapshot: snapshot,
            connectionDone: Image.network(snapshot.data.toString()),
          );
        },
      ),
    );
  }

IThemeManager

Ne İşe Yarar: Tema Yönetimi için İnterface'dir. Provider ile Theme Yönetiminde kullanılması için yazıldı.

   import 'package:flutter/material.dart';

    abstract class IThemeManager {
      late ThemeData currentTheme;
      late ThemeEnum currentThemeEnum;

      void changeTheme(ThemeEnum themes);
    }

    enum ThemeEnum { LIGHT, DARK }

Stream Builder Helper

Ne İşe Yarar: Stream Builder için Expand içerisinde Yerini Rahat bulabilmesini sağlama ve helper ile Gelen datayı daha iyi yönetme için kolaylık sağlar

    Widget build(BuildContext context) {
    ///
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: ExpandedStreamBuilder(
        stream: Stream.fromFuture(Future.delayed(Duration(seconds: 3))),
        builder: (context, AsyncSnapshot snapshot) {
          return myStreamBuilderHelper( // My code
            snapshot: snapshot,
            // Connection is State
            hasError:  Text("Your Error State on Widget"),
            connectionActive: Text("Your Active Widget"),
            connectionWaiting: Text("Your Waiting Widget"),
            connectionDone: Text("Your Done Widget"),
            connectionNone: Text("Your None Widget"),
          );
        },
      ),
    );
  }

Firebase Helper

Ne İşe Yarar: Firebase Auth Code Kullanım.

    try {
      await FirebaseEmailPassAuthHelper().signIn(
        context,
        email: _appController.emailController.text.trim(),
        password: _appController.passwordController.text.trim(),
      );

      _isLogged(false);
    } on FirebaseAuthException {
      _isLogged(true);
      throw Exception("Firebase Hata");
    }

Show Snackbar Utils

Ne İşe Yarar: Alt Pencere olarak uygulamada mesaj gösterir.

return Scaffold(
      body: Column(
        children: const [
          AppUtils.snackBarShow(context,
          text: "Email ile Girişte Hata Oluştu ${e.message}");
        ],
      ),
    );

Random Color Container Widget

Ne İşe Yarar: Tüm View Modelleri tek bir üst sınıftan alarak ortaklaştırmaya ve bazı özelliklerin zorunlu kılınmasına yardımcı olacak.

return Scaffold(
      body: Column(
        children: const [
          Expanded(flex: 5, child: RandomColorContainer()),
          Expanded(flex: 3, child: RandomColorContainer()),
          Expanded(flex: 2, child: RandomColorContainer()),
        ],
      ),
    );

Base View Widget

Ne İşe Yarar: Tüm View Modelleri tek bir üst sınıftan alarak ortaklaştırmaya ve bazı özelliklerin zorunlu kılınmasına yardımcı olacak.

import 'package:flutter/material.dart';

import '../../core/baseview/base_view.dart';
import '../viewmodel/onboard_viewmodel.dart';

class OnBoardView extends StatelessWidget {
  const OnBoardView({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return BaseView<OnBoardViewModel>(
      viewModel: OnBoardViewModel(),
      onModelReady: (model) {
        model.setContext(context);
      },
      onPageBuilder: (BuildContext context,OnBoardViewModel value) => Scaffold(),
    );
  }
}

Base View Model Widget

Ne İşe Yarar: Tüm View Modelleri tek bir üst sınıftan alarak ortaklaştırmaya ve bazı özelliklerin zorunlu kılınmasına yardımcı olacak.

import 'package:flutter/cupertino.dart';
import 'package:mobx/mobx.dart';

import '../../core/baseviewmodel/base_view_model.dart';
part 'onboard_viewmodel.g.dart';

class OnBoardViewModel = _OnBoardViewModelBase with _$OnBoardViewModel;

abstract class _OnBoardViewModelBase with Store, BaseViewModel {
  @override
  void setContext(BuildContext context) => this.context = context;
  @override
  void init() {}
}

Dynamic Text Widget in FittedBox

Ne İşe Yarar: Dinamik olarak boyutlanır ve belirli bir sınır içerisinde şekillenir.

class TestWidget extends StatelessWidget {
  const TestWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return DynamicText(
      text: "Hello",
      fontSize: 0.05,
      colors: Colors.black,
    );
  }
}

Dikey veya Yatay Oranlı Dinamik Sizedbox

Ne İşe Yarar: 0 ile 1 arasında verilecek yüzdesel oran ile Ekran içerisinde alan kaplayacak bir widget oluşturmanızı sağlar

class TestWidget extends StatelessWidget {
  const TestWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Column(
      children:  [
          Text("Hello"),
          SpaceSizedHeightBox(0.2), // %20 oranlı yüksek widget
          Text("Hello"),
      ]
    );
  }
}

Rastgele Color Değerleri

Ne İşe Yarar: 17 Renk Paleti arasında rastgele bir Renk getirir.

class TestWidget extends StatelessWidget {
  const TestWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Column(
      children:  [
          Text("Hello",
          style: TextStyle(color: context.randomColor),
          ),
      ]
    );
  }
}

Rastgele Resim (İnternetten)

Ne İşe Yarar: Random image sitesi api ile rastgele resim getirir. Ölçüleri (300x200)

class TestWidget extends StatelessWidget {
  const TestWidget({Key? key}) : super(key: key);
  @override
  Widget build(BuildContext context) {
    return Column(
      children:  [
          Image.network("".randomImage),
      ]
    );
  }
}

Libraries

hucel_core