Flutter Hooks භාවිතා කරලා ඇප් එකේ UI ලියන දා, කේතය සරලයි, කියවීමට පහසුයි. නමුත් සාම්ප්රදායික flutter_bloc එක HookWidget සමඟ සම්බන්ධ කරගන්නා විට බොහෝ වාරවල ගැටළු පෙනෙයි. මේකට අමතර පැකේජ, බරපතල widget wrappers, හෝ custom hooks අවශ්ය වුණා.
මෙම ගැටළුවට නව විසඳුමක් BlocSignal සහ signals_hooks පැකේජයයි. BlocSignal, Rody Davis විසින් නිර්මාණය කරපු signals.dart ප්රාථමිකයන් මත පදනම්ව, state එක ReadonlySignal<StateType> වශයෙන් සපයයි. එම නිසා state වෙනස් වීම ඒම frame එකේම සිදුවෙයි, Stream භාවිතා නොකර. ඒත් මේ නිසා HookWidget එකක් තුළ useSignalValue, useSignalEffect, useComputed වැනි hooks හරහා සෘජුව state පරිභෝගය, side‑effect හසුරුවීම, සහ derived selector ලිවිය හැකිය.
උදාහරණයක් ලෙස, useSignalValue(bloc.state) කියලා state එක කියවන්න පුළුවන්, state එක වෙනස් වුනම widget එක එකම පරිදි rebuild වේ. side‑effect එකක් (SnackBar, navigation) අවශ්ය නම් useSignalEffect තුළ ලියන්න, Stream listener එකක් හෝ BlocListener widget එකක් අවශ්ය නොවේ. තවත්, useComputed භාවිතයෙන් state එකේ උප‑state එකක් (උදා: even/odd) පරීක්ෂා කර, අනිවාර්ය නැති rebuild වීමක් වැළැක්විය හැකිය.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලාංකීය සංවර්ධකයින්ට මේ නව ආකෘතියේ ප්රයෝජන බොහොමයි:
- අධ්යයනයේ පහසුව – Hook‑based composition එක දැනටමත් පාඨමාලා වල පවතින නිසා, BlocSignal එකත් එක්ක එකතු කරලා ඉගෙනගැනීම සරලයි.
- ඉක්මන් සංවර්ධනය – glue code නැතිව, සින්ක්රෝනස් state update නිසා UI refresh වේගවත්, performance bottleneck අඩු වේ.
- ආරම්භක ව්යාපාර – startup එකක් Flutter UI එකක් ඉක්මනින් නිර්මාණය කරන විට, කේත පරිමාණය අඩු කරලා maintainability වැඩි කරගන්න පුළුවන්.
- ව්යාපාරික ROI – development time අඩු වීමෙන් project cost අඩු වේ, ඉදිරියේදී bug fixing කාලයත් කෙටි වේ.
ඉදිරියේදී Flutter community එකේ මේ නව pattern එක පළපුරුදු developers අතර ජනප්රියත්වය ගෙන ඒවි. ශ්රී ලංකාවේ mobile app development ecosystem එකට නව තාක්ෂණික ප්රවණතා එක්ක ගැනීමට මේක හොඳ අවස්ථාවක්.
සාරාංශයෙන්, BlocSignal + signals_hooks එකතු කිරීමෙන් Flutter Hooks වලින් ලබාගන්නා සරලතාවය, Bloc හි state management ශක්තිය, දෙකම එක්ක එකතු කරලා, කේතය ලෙසි, performance උසස්, සහ maintainability ඉහළ UI එකක් ගොඩනැගිය හැකිය.