Column ni moja ya Widgets muhimu sana katika Flutter. Inaruhusu upangaji wa watoto (children) wake wima, kwa mpangilio wa safu moja baada ya nyingine. Hii inakuwa muhimu sana unapounda maandishi, picha, vifungo, au vitu vingine vya UI vinavyohitaji kupangwa kwa mpangilio wa wima kwenye skrini.

 

Hapa utaona kuna msamiati mpya ijapokuwa nimekuwa nikikutajia habari ya children huko nyuma sasa hapa utakwenda kufahamu vyema habari ya kuwa na watoto inahusika vipi kwenye fluter.

 

Ili uweze kuielewa habari ya watoto na mtoto angalia picha hii:

 

Kwenye flutter kuna widget ambazo huwa zinaitaji kuwa na child yaani mtoto. Ninaposema mtoto nambaanisha ni ile widget nyingine utakayoiweka ndani ya hiyo widget kuu. Mfano wa baadhi ya widget hizo ni kama column. Endapo itahitaji widget zaidi ya moja ndani yake tutatumia children neno ambalo ni wingi wa child.

 

Sasa ipo hivi, kuna baadhi ya property zinahitaji child yaani mtoto mmoja tu ili kujaza eneo lote. Mfano wa property hizo ni body. Body inahitaji child mmoja ili kujaza eneo lake lote. Mfano ni chiyo child ya wideget column ambayo hutumika kupanga text ama maudhui kwa wima.

Ndio maana hapo pakatumiwa child: column. Hiyo Center() widget imetumika ili kuweka text zote kuwa katikati.

 

Sasa wakati huo huo child column anaweza kuwa na widget nyinginezo ndani yake ili kujaza maudhui. Widget hizo zitaitwa children kama ni nyingi ama child kama  ni moja. Utaziweka kwenye mabano []. Cheki code hizi hapa chini

import 'package:flutter/material.dart';

 

void main() {

 runApp(MyApp());

}

 

class MyApp extends StatelessWidget {

 @override

 Widget build(BuildContext context) {

   return MaterialApp(

     home: Scaffold(

       appBar: AppBar(

         title: Text('Tehama'),

         backgroundColor: Colors.blue,

         centerTitle: true,

       ),

       body: const Center(

         child: Column(

           children: <Widget>[

             Text('Haloo'),

             Text('Karibu kwenye Mafunzo'),

             Text('Mafunzo ya flutter framework'),

           ],

         ),

       ),

     ),

   );

 }

}

Tunaposema kupanga kwa wima, angalia hizo text hapo zimejipanga kutoka juu kuja kwa chini. Tutakuja kuona kwenye widget nyingine text mfano kama huo lakini zitajipanga tofauti.

 

Baadhi ya property za column

 Kuna propertykadhaa muhimu zinazopatikana kwenye Widget ya Column ambazo zinaweza kutumiwa kudhibiti jinsi watoto wake wanavyopangwa ndani yake. Hapa kuna propertymuhimu zaidi:

 

1.children: Hii ni propertyinayoshikilia orodha ya Widgets ambazo zinawekwa kwenye safu ya wima. Kila widget katika orodha hii itawekwa kwenye safu moja ya Column.

 

2.mainAxisAlignment: Inadhibiti jinsi watoto wa Column wanavyopangwa katika mwelekeo wa msingi (wima). Inaweza kuwa start, end, center, spaceBetween, spaceAround, au spaceEvenly.

 

3.crossAxisAlignment: Inadhibiti jinsi watoto wa Column wanavyopangwa katika mwelekeo wa pembeni. Inaweza kuwa start, end, center, stretch


 

4.mainAxisSize: Inadhibiti saizi ya mwelekeo wa msingi wa Column katika mwelekeo wa wima. Inaweza kuwa min au max. Ikiwa ni 'min', Column itachukua nafasi ndogo inayohitajika kwa watoto wake, wakati 'max' itachukua nafasi yote inayopatikana kwenye mwelekeo wa msingi.

 

5.verticalDirection: Inadhibiti mwelekeo wa ukuaji wa safu ya wima. Inaweza kuwa down au up.

 

Hizi ni baadhi tu ya property muhimu zinazopatikana kwenye Widget ya Column. Kwa kujifunza zaidi kuhusu property hizi na jinsi ya kuzitumia kwa ufanisi, ni muhimu kusoma nyaraka za Flutter au kufanya majaribio na kubadilisha thamani za propertyhizi katika kichocheo chako cha Flutter.

 

MainAxixAlignment:

child: Column(

 mainAxisAlignment: MainAxisAlignment.end,

 children: [

   Text('Item 1'),

   Text('Item 2'),

   Text('Item 3'),

 ],

)

Hapo nimetumia end. Uaweza kuibadilisha uone matokeo, kama ikiwa center utaona hizo text zote zitakuwa center.


 

crossAxisAlignment

child: Column(

 crossAxisAlignment: CrossAxisAlignment.stretch,

 children: [

   Text('Item 1'),

   Text('Item 2'),

   Text('Item 3'),

 ],

)

 

mainAxisSize:

child: Column(

 mainAxisSize: MainAxisSize.min,

 children: [

   Text('Item 1'),

   Text('Item 2'),

   Text('Item 3'),

 ],

)

 

verticalDirection

child: Column(

 verticalDirection: VerticalDirection.up,

 children: [

   Text('Item 1'),

   Text('Item 2'),

   Text('Item 3'),

 ],

)

 

Kuweka style:

Hapa nataka kukukumbusha tu kuwa kama unataka kuweka style za text kwenye body utafanya kama tulivyofanya kwenye appBar. Mfano

import 'package:flutter/material.dart';

 

void main() {

 runApp(MyApp());

}

 

class MyApp extends StatelessWidget {

 @override

 Widget build(BuildContext context) {

   return MaterialApp(

     home: Scaffold(

       appBar: AppBar(

         title: Text('Tehama'),

         backgroundColor: Colors.blue,

         centerTitle: true,

       ),

       body: const Center(

         //padding: EdgeInsets.all(20.0),

         child: Center(

           child: Column(

             children: <Widget>[

               Text(

                 'Haloo',

                 style: TextStyle(

                   fontSize: 20.0, // Define specific font size

                   fontWeight: FontWeight.bold,

                   fontFamily: 'sans-serif', // Use generic font family

                   color: Colors.blue,

                 ),

               ),

               Text(

                 'Karibu kwenye Mafunzo',

                 style: TextStyle(

                   fontSize: 20.0,

                   fontFamily: 'sans-serif',

                   color: Colors.yellow,

                 ),

               ),

               Text(

                 'Mafunzo ya flutter framework',

                 style: TextStyle(

                   fontSize: 20.0,

                   fontFamily: 'sans-serif',

                   color: Colors.green,

                 ),

               ),

             ],

           ),

         ),

       ),

     ),

   );

 }

}

 

Mwisho:

Chukulia mazoezi hizo property, somolinalofuata tutakwenda kujifunza kuhusu widget ya row. Ni moja kati ya widget ambazo zina mahusiano ya kufanana na hii ya column.