From aa5235f03946c3a321475878a09daaec755c7274 Mon Sep 17 00:00:00 2001 From: krishitapandey Date: Wed, 29 May 2024 10:43:23 +0545 Subject: [PATCH] screen utili package --- .gradle/8.1.1/checksums/checksums.lock | Bin 17 -> 17 bytes .gradle/8.1.1/checksums/md5-checksums.bin | Bin 34947 -> 43197 bytes .gradle/8.1.1/checksums/sha1-checksums.bin | Bin 109532 -> 147599 bytes lib/about.dart | 28 ++-- lib/bar.dart | 66 ++++---- lib/home_page.dart | 54 ++++--- lib/landing_page.dart | 29 ++-- lib/main.dart | 67 ++++---- lib/programs screen/girl_script.dart | 81 +++++----- .../google_season_of_docs_screen.dart | 147 +++++++++--------- .../google_summer_of_code_screen.dart | 68 ++++---- lib/programs screen/linux_foundation.dart | 47 +++--- lib/programs screen/summer_of_bitcoin.dart | 69 ++++---- pubspec.lock | 32 ++-- pubspec.yaml | 1 + 15 files changed, 358 insertions(+), 331 deletions(-) diff --git a/.gradle/8.1.1/checksums/checksums.lock b/.gradle/8.1.1/checksums/checksums.lock index 5d738dc1eb44699e69d74e1d2bbf35edc2cef9f9..9bfd332cf4a7e3c8ab2578f89616c3f8dce210a0 100644 GIT binary patch literal 17 VcmZSfj`=<3(l4Q73}C>15&%6F1-1YH literal 17 VcmZSfj`=<3(l4Q73}C?O1OPmW1uXyo diff --git a/.gradle/8.1.1/checksums/md5-checksums.bin b/.gradle/8.1.1/checksums/md5-checksums.bin index 0123b95d2bf06a12732e2acfdfc2e8682ff9b53b..6f09f2d25501b4eed2db18a0b13164aeeede27e6 100644 GIT binary patch delta 5599 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 SQHTX0en$Si!(74de*c%+%trUiKF?Lfi zPZ)Kh)qzGOb)%bZn7Fvr&A|bk=vLzmzdYMJyrb{lXRo~1A#B$aFWpYl90?K1^Y?KIH@zgDyXj37`gSO+VoN#V(A*c(sioZJMKu0hOBcT zB{xzK(*?V(Q(a-KJ5)20ml?rTMj1{rcRkEzUvZgjQ_0zka)O-E;j5uAHB@4Gg=XG; z!tHHd@VFou6$F!lj}DO~HX#V{EGYGmm(&*(GNQo?1E=md4bQG`AeSZE2*oZTj1iU`5cVw7IT)@`iqY MjI7)nZrYalAM?Dl0{{R3 diff --git a/.gradle/8.1.1/checksums/sha1-checksums.bin b/.gradle/8.1.1/checksums/sha1-checksums.bin index f837589dc83d1b24ca39c935d8a19af9a65be724..4d55c2acc752994af3934228fc734d0e14d239f9 100644 GIT binary patch delta 17185 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 delta 1471 zcmb_bT}+c#7~WeL!wrjDOnbf|jDj!)rC$eB)QNvXz9!yV$Y%vg)sFQ&0jejU~XadW!IbDLg68ytje_H%2?yc-{ciTzc=RN1VKj%H~ zdCtM6X(LxtPL_zbQyQ0gbCcJFetGTHIB*L4g#{rY5EClO6@eC|3#;B$(aDmPq2ok` zidcp~{wym_&2qq$slu75Bg}eDmcJ*KwSZ8OEwDdZ!CBT}mMn{kI!h%6EH)T(TxiJ= z2;`VCnxnv!>%xItGtT6?VV~{Az-$Nd^E9;QSrN~3z?m;_AU}e(_gyf~5h$OdqJ?F6 zjt;3;SE!+-P{mlG3(k35{5(I_%)f^6A|1m;0!7wJ?6+#T zXSKnun$e)T5mPzN=Eaar!KBTMiVs}4!ctYNz*l?_c_j*JN_0$?XmFNtO{E&br7G-p zfjYZ}kll*B1%JX+romGt(8)Swp$oo+m5461p=Obaz@qh-zqr{TevtmHv?MsXm9j}@ zZl_9lcsse}bPowx?IFL6C!oViE}5y5SsvC&kpntu!Rj4UM)J&;?3lTeRJma%>2i8K zt(U#^?7gjl9P&y7&#HWEZS|2Rqds0bD5fzPWxYEeW*P9qNG$jscN|eyd zVb#sN_f-Oh5)f}DuROh*Ggs{)ttY(rkWL0P_Nr-9w7Id5_401Z6LYtE&5V6FQt5Xb zzu|y!)QeN2ZWN8_I6Eega#Mrvriu`Y@s^4jmiAi$W4E~9xBa+x+krKARJ7gcLd{*a z-SuPDxQ5Pg72)x#h~A6L$VkdfUp8T1_v&aeuSec}3!L}O=(z7jR>X=85rNi-4Kbc? zexRWJfxs|}>7ju0p%onue}wOm8P^}VQS(?s;ISF;$8LC{oFi&OILeP2<04{KT#vah zG{J|*AoNmi ztsz(IFn7F&xVs+Wo^}$Qmp%hOlrf2y0f_raG-H zfBDal#eHOx^?jUlq>r7`E--wUfK3;uOU}DUB7NhL+BeQ`Tr?G0^+@i%NNZ(AKOgdW zKlABWKL^hqplfnwh#9yy#1A|kA}xKSz%x=Tew*rW-AcLlXX=)p46=9cAk*^GOPt~K zB@W5B%xP9%=H;==e5fax3HnDet)*aj3N16pwp6}f@2{i>Tc%Me$<8;~tL`o83g)NL z_XZg=@;Z>t_Ej@zkb?Q|&<=y4@IkjFJGt#B8G}E~q>r3rlxbV3@85sR5)Y^N|9*@9 zUq6app4rWpF5N>e{wQ5Za^M>}i0D$cjPIp$J)_HN4RW=g6qK*@%1wvJ(KEJkBgtbR n8|o@_Idqsr&tDbq@m3qTP*E9?+m29 const BookMarkScreen()), + MaterialPageRoute( + builder: (context) => const BookMarkScreen()), ); }, ), - - const Padding(padding: EdgeInsets.only(top: 40)), - + Padding( + padding: + EdgeInsets.only(top: ScreenUtil().setHeight(40))), MenuOption( title: 'About', onTap: () { @@ -56,18 +62,17 @@ class AppBarWidget extends StatelessWidget implements PreferredSizeWidget { ); }, ), - ], ), - ), + ), ), + ), ), - ) ); } @override - Size get preferredSize => const Size.fromHeight(kToolbarHeight); + Size get preferredSize => Size.fromHeight(kToolbarHeight); } class MenuOption extends StatefulWidget { @@ -100,10 +105,10 @@ class _MenuOptionState extends State { child: Ink( decoration: BoxDecoration( color: const Color.fromARGB(255, 237, 237, 239), - borderRadius: BorderRadius.circular(25), + borderRadius: BorderRadius.circular(ScreenUtil().setWidth(25)), ), child: InkWell( - borderRadius: BorderRadius.circular(20), + borderRadius: BorderRadius.circular(ScreenUtil().setWidth(20)), onTap: () { setState(() { _isClicked = !_isClicked; @@ -112,29 +117,28 @@ class _MenuOptionState extends State { }, child: Container( child: Padding( - padding: const EdgeInsets.all(10.0), + padding: EdgeInsets.all(ScreenUtil().setWidth(10)), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Padding( - padding: const EdgeInsets.all(10.0), + padding: EdgeInsets.all(ScreenUtil().setWidth(10)), child: Text( widget.title, - style: const TextStyle( - fontSize: 18, + style: TextStyle( + fontSize: ScreenUtil().setSp(18), fontWeight: FontWeight.bold, ), ), ), - const Icon(Icons.arrow_forward_ios), ], ), ), + ), ), ), ), - ) ); } } @@ -145,12 +149,12 @@ class CustomSearchDelegate extends SearchDelegate { return [ query.isNotEmpty ? IconButton( - icon: const Icon(Icons.clear), - onPressed: () { - query = ''; - showSuggestions(context); - }, - ) + icon: const Icon(Icons.clear), + onPressed: () { + query = ''; + showSuggestions(context); + }, + ) : Container(), ]; } diff --git a/lib/home_page.dart b/lib/home_page.dart index 5b3e319..5f365ef 100644 --- a/lib/home_page.dart +++ b/lib/home_page.dart @@ -1,4 +1,5 @@ import 'dart:ui'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -96,15 +97,23 @@ class _HomePageState extends State { @override Widget build(BuildContext context) { - var media = MediaQuery.of(context).size; + // var media = MediaQuery.of(context).size; Color backgroundColor = Theme.of(context).brightness == Brightness.dark ? Colors.black.withOpacity(0.6) // Example dark mode color : Colors.white.withOpacity(0.6); // Example light mode color + + ScreenUtil.init( + context, + ); + final double appBarFontSize = ScreenUtil().setSp(18); + final double appTextFontSize = ScreenUtil().setSp(20); + final double SizedSize = ScreenUtil().setHeight(20); return Scaffold( appBar: AppBar( - title: const Text( + title: Text( 'OpSo', - style: TextStyle(fontWeight: FontWeight.bold), + style: + TextStyle(fontWeight: FontWeight.bold, fontSize: appBarFontSize), ), actions: [ IconButton( @@ -143,17 +152,19 @@ class _HomePageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - const SizedBox( + SizedBox( height: kTextTabBarHeight, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: [ Icon(FontAwesomeIcons.bars), - SizedBox(width: 10), + SizedBox( + width: ScreenUtil().setWidth(100), + ), Text( 'Menu', style: TextStyle( - fontSize: 20, + fontSize: appTextFontSize, // color: Colors.black, fontWeight: FontWeight.w700, ), @@ -161,7 +172,7 @@ class _HomePageState extends State { ], ), ), - const SizedBox(height: 15), + SizedBox(height: ScreenUtil().setHeight(15)), const Divider( color: Colors.black26, height: 1, @@ -170,7 +181,7 @@ class _HomePageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - const SizedBox(height: 15), + SizedBox(height: ScreenUtil().setHeight(15)), InkWell( onTap: () {}, child: ListTile( @@ -208,7 +219,7 @@ class _HomePageState extends State { const SizedBox(height: 15), ListTile( leading: Transform.rotate( - angle: 90 * math.pi/180, + angle: 90 * math.pi / 180, child: const Icon( FontAwesomeIcons.timeline, ), @@ -218,12 +229,13 @@ class _HomePageState extends State { Navigator.push( context, MaterialPageRoute( - builder: (context) => const OpsoTimeLineScreen(), + builder: (context) => + const OpsoTimeLineScreen(), ), ); }, ), - const SizedBox(height: 15), + SizedBox(height: ScreenUtil().setHeight(15)), ListTile( leading: const Icon(FontAwesomeIcons.circleInfo), @@ -237,7 +249,7 @@ class _HomePageState extends State { ); }, ), - const SizedBox(height: 15), + SizedBox(height: ScreenUtil().setHeight(15)), ], ), ), @@ -245,7 +257,7 @@ class _HomePageState extends State { color: Colors.black26, height: 1, ), - const SizedBox(height: 15), + SizedBox(height: ScreenUtil().setHeight(15)), ], ), ), @@ -354,10 +366,10 @@ class ProgramOption extends StatelessWidget { GestureDetector( onTap: onTap, child: Container( - padding: const EdgeInsets.all(20), + padding: EdgeInsets.all(ScreenUtil().setWidth(20)), decoration: BoxDecoration( // color: const Color.fromARGB(255, 237, 237, 239), - borderRadius: BorderRadius.circular(15), + borderRadius: BorderRadius.circular(15), border: Border.all( width: 1, color: borderColor, @@ -367,15 +379,15 @@ class ProgramOption extends StatelessWidget { children: [ Image.asset( imageAssetPath, - width: 50, - height: 50, + width: ScreenUtil().setWidth(50), + height: ScreenUtil().setHeight(50), ), - const SizedBox(width: 20), + SizedBox(width: ScreenUtil().setWidth(20)), Expanded( child: Text( title, - style: const TextStyle( - fontSize: 18, + style: TextStyle( + fontSize: ScreenUtil().setSp(18), fontWeight: FontWeight.bold, ), ), @@ -385,7 +397,7 @@ class ProgramOption extends StatelessWidget { ), ), ), - const SizedBox(height: 20), // Adding SizedBox between each button + SizedBox(height: ScreenUtil().setHeight(20)), ], ); } diff --git a/lib/landing_page.dart b/lib/landing_page.dart index 0ffddd5..1d7a89b 100644 --- a/lib/landing_page.dart +++ b/lib/landing_page.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:animated_text_kit/animated_text_kit.dart'; import 'package:opso/home_page.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; class LandingPage extends StatefulWidget { const LandingPage({super.key}); @@ -12,8 +13,11 @@ class LandingPage extends StatefulWidget { class _LandingPageState extends State { @override Widget build(BuildContext context) { - double width = MediaQuery.of(context).size.width; - double height = MediaQuery.of(context).size.height; + ScreenUtilInit( + designSize: Size(360, 690), + ); + // double width = MediaQuery.of(context).size.width; + // double height = MediaQuery.of(context).size.height; return Scaffold( body: SingleChildScrollView( child: Padding( @@ -23,8 +27,8 @@ class _LandingPageState extends State { children: [ Center( child: Container( - width: width, - height: height / 2, + width: 360.w, + height: (690.h) / 2, decoration: const BoxDecoration( image: DecorationImage( image: AssetImage("assets/landing.webp"), @@ -36,15 +40,14 @@ class _LandingPageState extends State { child: SizedBox( child: DefaultTextStyle( style: TextStyle( - fontSize: width / 19, + fontSize: 50.sp, ), child: AnimatedTextKit( animatedTexts: [ ColorizeAnimatedText( 'Unlock your potential', textStyle: TextStyle( - fontSize: width / 12, - fontWeight: FontWeight.w900), + fontSize: 20.sp, fontWeight: FontWeight.w700), colors: [ const Color.fromRGBO(255, 183, 77, 1), const Color.fromARGB(255, 231, 225, 208) @@ -62,15 +65,15 @@ class _LandingPageState extends State { child: Text( "Contribute to Open Source", style: TextStyle( - fontWeight: FontWeight.w400, fontSize: width / 18), + fontWeight: FontWeight.w400, fontSize: 20.sp), ), ), ), const Padding(padding: EdgeInsets.only(top: 30)), Center( child: SizedBox( - width: width / 1.5, - height: height / 10, + width: 250.w, + height: 60.h, child: ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: @@ -88,8 +91,10 @@ class _LandingPageState extends State { "Get started", style: TextStyle( color: Colors.white, - fontSize: - (width < height) ? width / 19 : height / 19), + fontSize: (MediaQuery.of(context).size.width < + MediaQuery.of(context).size.height) + ? 19.sp + : 19.sh), ), ), ), diff --git a/lib/main.dart b/lib/main.dart index 76d1f3c..58635fc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:opso/landing_page.dart'; import 'package:opso/programs%20screen/girl_script.dart'; import 'package:opso/programs%20screen/google_season_of_docs_screen.dart'; @@ -22,34 +23,42 @@ class OpSoApp extends StatelessWidget { @override Widget build(BuildContext context) { - return AdaptiveTheme( - light: ThemeData.light(), - dark: ThemeData.dark(), - initial: AdaptiveThemeMode.system, - builder: (theme, darkTheme) => MaterialApp( - initialRoute: '/landing_page', - routes: { - "/progarm_page": (context) => const HomePage(), - "/girl_script_summer_of_code": (context) => const GSSOCScreen(), - "/google_summer_of_code": (context) => GoogleSummerOfCodeScreen(), - "/google_season_of_docs": (context) => GoogleSeasonOfDocsScreen(), - "/summer_of_bitcoin": (context) => const SummerOfBitcoin(), - "/outreachy": (context) => const OutReachy(), - "/major_league_hacking_fellowship": (context) => - const MajorLeagueHackingFellowship(), - "/linux_foundation": (context) => const LinuxFoundation(), - "/landing_page": (context) => const LandingPage(), - }, - title: 'OpSo', - debugShowCheckedModeBanner: false, - theme: theme, - darkTheme: darkTheme, - // theme: ThemeData( - // primarySwatch: Colors.blue, - // visualDensity: VisualDensity.adaptivePlatformDensity, - // ), - home: const HomePage(), - ), - ); + return ScreenUtilInit( + designSize: const Size(360, 690), + minTextAdapt: true, + splitScreenMode: false, + builder: (_, child) { + return AdaptiveTheme( + light: ThemeData.light(), + dark: ThemeData.dark(), + initial: AdaptiveThemeMode.system, + builder: (theme, darkTheme) => MaterialApp( + initialRoute: '/landing_page', + routes: { + "/progarm_page": (context) => const HomePage(), + "/girl_script_summer_of_code": (context) => const GSSOCScreen(), + "/google_summer_of_code": (context) => + GoogleSummerOfCodeScreen(), + "/google_season_of_docs": (context) => + GoogleSeasonOfDocsScreen(), + "/summer_of_bitcoin": (context) => const SummerOfBitcoin(), + "/outreachy": (context) => const OutReachy(), + "/major_league_hacking_fellowship": (context) => + const MajorLeagueHackingFellowship(), + "/linux_foundation": (context) => const LinuxFoundation(), + "/landing_page": (context) => const LandingPage(), + }, + title: 'OpSo', + debugShowCheckedModeBanner: false, + theme: theme, + darkTheme: darkTheme, + // theme: ThemeData( + // primarySwatch: Colors.blue, + // visualDensity: VisualDensity.adaptivePlatformDensity, + // ), + home: const HomePage(), + ), + ); + }); } } diff --git a/lib/programs screen/girl_script.dart b/lib/programs screen/girl_script.dart index 8ea149d..06f5340 100644 --- a/lib/programs screen/girl_script.dart +++ b/lib/programs screen/girl_script.dart @@ -4,23 +4,19 @@ import 'package:flutter/services.dart'; import 'package:opso/modals/book_mark_model.dart'; import 'package:opso/modals/gssoc_project_modal.dart'; - +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:opso/widgets/gssoc_project_widget.dart'; import 'package:opso/widgets/year_button.dart'; - import '../widgets/SearchandFilterWidget.dart'; - class GSSOCScreen extends StatefulWidget { const GSSOCScreen({super.key}); - @override State createState() => _GSSOCScreenState(); } - class _GSSOCScreenState extends State { String currectPage = "/girl_script_summer_of_code"; String currentProject = "Girl Script Summer of Code"; @@ -34,36 +30,34 @@ class _GSSOCScreenState extends State { List projectList = []; Future? getProjectFunction; - Future initializeProjectLists() async { String response = - await rootBundle.loadString('assets/projects/gssoc/gssoc2024.json'); + await rootBundle.loadString('assets/projects/gssoc/gssoc2024.json'); var jsonList = await json.decode(response); for (var data in jsonList) { gssoc2024.add(GssocProjectModal.getDataFromJson(data)); } projectList = List.from(gssoc2024); response = - await rootBundle.loadString('assets/projects/gssoc/gssoc2023.json'); + await rootBundle.loadString('assets/projects/gssoc/gssoc2023.json'); jsonList = await json.decode(response); for (var data in jsonList) { gssoc2023.add(GssocProjectModal.getDataFromJson(data)); } response = - await rootBundle.loadString('assets/projects/gssoc/gssoc2022.json'); + await rootBundle.loadString('assets/projects/gssoc/gssoc2022.json'); jsonList = await json.decode(response); for (var data in jsonList) { gssoc2022.add(GssocProjectModal.getDataFromJson(data)); } response = - await rootBundle.loadString('assets/projects/gssoc/gssoc2021.json'); + await rootBundle.loadString('assets/projects/gssoc/gssoc2021.json'); jsonList = await json.decode(response); for (var data in jsonList) { gssoc2021.add(GssocProjectModal.getDataFromJson(data)); } } - @override void initState() { getProjectFunction = initializeProjectLists(); @@ -71,7 +65,6 @@ class _GSSOCScreenState extends State { _checkBookmarkStatus(); } - Future _checkBookmarkStatus() async { bool bookmarkStatus = await HandleBookmark.isBookmarked(currentProject); setState(() { @@ -79,7 +72,6 @@ class _GSSOCScreenState extends State { }); } - void searchTag(String searchTag) { projectList = projectList .where((element) => element.techstack.contains(searchTag)) @@ -87,7 +79,6 @@ class _GSSOCScreenState extends State { setState(() {}); } - void search(String searchText) { if (searchText.isEmpty) { switch (selectedYear) { @@ -110,15 +101,14 @@ class _GSSOCScreenState extends State { projectList = projectList .where( (element) => - element.name.toLowerCase().contains(searchText.toLowerCase()) || - element.techstack.contains(searchText) || - element.hostedBy.toLowerCase().contains(searchText.toLowerCase()), - ) + element.name.toLowerCase().contains(searchText.toLowerCase()) || + element.techstack.contains(searchText) || + element.hostedBy.toLowerCase().contains(searchText.toLowerCase()), + ) .toList(); setState(() {}); } - Future _refresh() async { setState(() { initializeProjectLists(); @@ -126,11 +116,11 @@ class _GSSOCScreenState extends State { }); } - @override Widget build(BuildContext context) { - var height = MediaQuery.sizeOf(context).height; - var width = MediaQuery.sizeOf(context).width; + ScreenUtil.init(context); + // var height = MediaQuery.sizeOf(context).height; + // var width = MediaQuery.sizeOf(context).width; List languages = [ 'All', 'Js', @@ -186,8 +176,9 @@ class _GSSOCScreenState extends State { return const Center(child: CircularProgressIndicator()); } else if (snapshot.connectionState == ConnectionState.done) { return Padding( - padding: - const EdgeInsets.symmetric(horizontal: 46, vertical: 16), + padding: EdgeInsets.symmetric( + horizontal: ScreenUtil().setWidth(46), + vertical: ScreenUtil().setHeight(16)), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -221,8 +212,9 @@ class _GSSOCScreenState extends State { color: Color(0xFFEEEEEE), ), ), - contentPadding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 20.0), + contentPadding: EdgeInsets.symmetric( + vertical: ScreenUtil().setHeight(12), + horizontal: ScreenUtil().setWidth(20)), ), onFieldSubmitted: (value) { print("value is $value"); @@ -236,12 +228,12 @@ class _GSSOCScreenState extends State { ), const SizedBox(height: 20), SizedBox( - height: height * 0.2, - width: width, + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, child: GridView( physics: const NeverScrollableScrollPhysics(), gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( + const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, childAspectRatio: 1.5 / 0.6, crossAxisSpacing: 15, @@ -323,24 +315,27 @@ class _GSSOCScreenState extends State { // ), // ), // ), - const SizedBox( - height: 20, + SizedBox( + height: ScreenUtil().setHeight(20), ), - Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ - const Text( + Text( 'Filter by Language:', - style: TextStyle(fontWeight: FontWeight.w400), + style: TextStyle( + fontWeight: FontWeight.w400, + fontSize: ScreenUtil().setSp(14)), ), Padding( - padding: const EdgeInsets.all(8.0), + padding: + EdgeInsets.all(ScreenUtil().setHeight(8)), child: Row( crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.spaceEvenly, + mainAxisAlignment: + MainAxisAlignment.spaceEvenly, children: [ DropdownWidget( items: languages, @@ -372,19 +367,19 @@ class _GSSOCScreenState extends State { ], ), - Expanded( // width: width, child: ListView.builder( itemCount: projectList.length, itemBuilder: (BuildContext context, int index) { return Padding( - padding: const EdgeInsets.symmetric(vertical: 10), + padding: + const EdgeInsets.symmetric(vertical: 10), child: GssocProjectWidget( index: index + 1, modal: projectList[index], - height: height * 0.2, - width: width, + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, ), ); }, @@ -397,10 +392,6 @@ class _GSSOCScreenState extends State { return const Center(child: Text("Some error occured")); } }), - ) - ); + )); } } - - - diff --git a/lib/programs screen/google_season_of_docs_screen.dart b/lib/programs screen/google_season_of_docs_screen.dart index 6e2df0e..c8c7a5a 100644 --- a/lib/programs screen/google_season_of_docs_screen.dart +++ b/lib/programs screen/google_season_of_docs_screen.dart @@ -1,6 +1,6 @@ import 'dart:convert'; - +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:opso/modals/book_mark_model.dart'; @@ -10,14 +10,12 @@ import 'package:opso/widgets/gsod/gsod_project_widget_new.dart'; import 'package:opso/widgets/gsod/gsod_project_widget_old.dart'; import 'package:opso/widgets/year_button.dart'; - class GoogleSeasonOfDocsScreen extends StatefulWidget { @override State createState() => _GoogleSeasonOfDocsScreenState(); } - class _GoogleSeasonOfDocsScreenState extends State { String currentProgram = "Google Season of Docs"; bool isBookmarked = true; @@ -30,14 +28,12 @@ class _GoogleSeasonOfDocsScreenState extends State { bool flag = true; int selectedYear = 2023; - List projectList = []; Future? getProjectFunction; - Future initializeProjectLists() async { String response = - await rootBundle.loadString('assets/projects/gsod/gsod2023.json'); + await rootBundle.loadString('assets/projects/gsod/gsod2023.json'); var jsonList = await json.decode(response); for (var data in jsonList) { gsod2023.add(GsodModalNew.fromMap(data)); @@ -45,39 +41,35 @@ class _GoogleSeasonOfDocsScreenState extends State { print(gsod2023.length); projectList = List.from(gsod2023); response = - await rootBundle.loadString('assets/projects/gsod/gsod2022.json'); + await rootBundle.loadString('assets/projects/gsod/gsod2022.json'); jsonList = await json.decode(response); - for (var data in jsonList) { print(data["organization_name"]); gsod2022.add(GsodModalNew.fromMap(data)); } - response = - await rootBundle.loadString('assets/projects/gsod/gsod2021.json'); + await rootBundle.loadString('assets/projects/gsod/gsod2021.json'); jsonList = await json.decode(response); - for (var data in jsonList) { gsod2021.add(GsodModalNew.fromMap(data)); } response = - await rootBundle.loadString('assets/projects/gsod/gsod2020.json'); + await rootBundle.loadString('assets/projects/gsod/gsod2020.json'); jsonList = await json.decode(response); for (var data in jsonList) { gsod2020.add(GsodModalOld.fromMap(data)); } response = - await rootBundle.loadString('assets/projects/gsod/gsod2019.json'); + await rootBundle.loadString('assets/projects/gsod/gsod2019.json'); jsonList = await json.decode(response); for (var data in jsonList) { gsod2019.add(GsodModalOld.fromMap(data)); } } - @override void initState() { getProjectFunction = initializeProjectLists(); @@ -85,7 +77,6 @@ class _GoogleSeasonOfDocsScreenState extends State { super.initState(); } - Future _checkBookmarkStatus() async { bool bookmarkStatus = await HandleBookmark.isBookmarked(currentProgram); setState(() { @@ -93,7 +84,6 @@ class _GoogleSeasonOfDocsScreenState extends State { }); } - void search(String searchText) { if (searchText.isEmpty) { switch (selectedYear) { @@ -120,62 +110,65 @@ class _GoogleSeasonOfDocsScreenState extends State { projectList = projectList .where( (element) => - element.organizationName - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.budget - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.acceptedProjectProposal - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.caseStudy - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.docsPage - .toLowerCase() - .contains(searchText.toLowerCase()), - ) + element.organizationName + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.budget + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.acceptedProjectProposal + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.caseStudy + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.docsPage + .toLowerCase() + .contains(searchText.toLowerCase()), + ) .toList(); } else { projectList = projectList .where( (element) => - element.organization - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.technicalWriter - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.mentor - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.project - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.originalProjectProposal - .toLowerCase() - .contains(searchText.toLowerCase()) || - element.report.toLowerCase().contains(searchText.toLowerCase()), - ) + element.organization + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.technicalWriter + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.mentor + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.project + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.originalProjectProposal + .toLowerCase() + .contains(searchText.toLowerCase()) || + element.report.toLowerCase().contains(searchText.toLowerCase()), + ) .toList(); } - setState(() {}); } + Future _refresh() async { // Fetch data for the next year based on the currently selected year setState(() { initializeProjectLists(); selectedYear = 2023; - if (selectedYear > 2023) selectedYear = 2019; // Reset to the beginning if it exceeds 2023 + if (selectedYear > 2023) + selectedYear = 2019; // Reset to the beginning if it exceeds 2023 }); } + @override Widget build(BuildContext context) { - var height = MediaQuery.sizeOf(context).height; - var width = MediaQuery.sizeOf(context).width; + // var height = MediaQuery.sizeOf(context).height; + // var width = MediaQuery.sizeOf(context).width; + ScreenUtil.init(context); return RefreshIndicator( onRefresh: _refresh, child: Scaffold( @@ -190,10 +183,10 @@ class _GoogleSeasonOfDocsScreenState extends State { }); ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: - Text(isBookmarked ? 'Bookmark added' : 'Bookmark removed'), - duration: - const Duration(seconds: 2), // Adjust the duration as needed + content: Text( + isBookmarked ? 'Bookmark added' : 'Bookmark removed'), + duration: const Duration( + seconds: 2), // Adjust the duration as needed ), ); if (isBookmarked) { @@ -213,8 +206,9 @@ class _GoogleSeasonOfDocsScreenState extends State { return const Center(child: CircularProgressIndicator()); } else if (snapshot.connectionState == ConnectionState.done) { return Padding( - padding: - const EdgeInsets.symmetric(horizontal: 46, vertical: 16), + padding: EdgeInsets.symmetric( + horizontal: ScreenUtil().setWidth(46), + vertical: ScreenUtil().setHeight(16)), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -248,8 +242,9 @@ class _GoogleSeasonOfDocsScreenState extends State { color: Color(0xFFEEEEEE), ), ), - contentPadding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 20.0), + contentPadding: EdgeInsets.symmetric( + vertical: ScreenUtil().setHeight(12), + horizontal: ScreenUtil().setWidth(40)), ), onFieldSubmitted: (value) { print("value is $value"); @@ -261,16 +256,16 @@ class _GoogleSeasonOfDocsScreenState extends State { } }, ), - const SizedBox(height: 20), + SizedBox(height: ScreenUtil().setHeight(20)), Container( constraints: BoxConstraints( - maxHeight: height * 0.3, + maxHeight: ScreenUtil().screenHeight * 0.3, ), - width: width, + width: ScreenUtil().screenWidth, child: GridView( physics: const NeverScrollableScrollPhysics(), gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( + const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, childAspectRatio: 1.5 / 0.6, crossAxisSpacing: 15, @@ -369,7 +364,6 @@ class _GoogleSeasonOfDocsScreenState extends State { height: 20, ), - Expanded( // width: width, child: ListView.builder( @@ -379,17 +373,17 @@ class _GoogleSeasonOfDocsScreenState extends State { padding: const EdgeInsets.symmetric(vertical: 10), child: selectedYear <= 2020 ? GsodProjectWidgetOld( - index: index + 1, - modal: projectList[index], - height: height * 0.2, - width: width, - ) + index: index + 1, + modal: projectList[index], + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, + ) : GsodProjectWidgetNew( - index: index + 1, - modal: projectList[index], - height: height * 0.2, - width: width, - ), + index: index + 1, + modal: projectList[index], + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, + ), ); }, ), @@ -405,4 +399,3 @@ class _GoogleSeasonOfDocsScreenState extends State { ); } } - diff --git a/lib/programs screen/google_summer_of_code_screen.dart b/lib/programs screen/google_summer_of_code_screen.dart index d324216..25e7655 100644 --- a/lib/programs screen/google_summer_of_code_screen.dart +++ b/lib/programs screen/google_summer_of_code_screen.dart @@ -3,17 +3,18 @@ import 'package:flutter/material.dart'; import 'package:opso/widgets/gsoc/GsocProjectWidget.dart'; import 'package:url_launcher/url_launcher.dart'; import '../modals/GSoC/Gsoc.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + import '../services/ApiService.dart'; import '../widgets/SearchandFilterWidget.dart'; import '../widgets/year_button.dart'; - class GoogleSummerOfCodeScreen extends StatefulWidget { @override - State createState() => _GoogleSummerOfCodeScreenState(); + State createState() => + _GoogleSummerOfCodeScreenState(); } - class _GoogleSummerOfCodeScreenState extends State { List gsoc2024 = []; List gsoc2023 = []; @@ -41,14 +42,12 @@ class _GoogleSummerOfCodeScreenState extends State { late Future _dataFetchFuture; final GlobalKey _listKey = GlobalKey(); - @override void initState() { super.initState(); _dataFetchFuture = getProjectData(); } - Future getProjectData() async { ApiService apiService = ApiService(); try { @@ -57,7 +56,6 @@ class _GoogleSummerOfCodeScreenState extends State { Gsoc orgData2023 = await apiService.getOrgByYear('2023'); Gsoc orgData2024 = await apiService.getOrgByYear('2024'); - setState(() { gsoc2021 = orgData2021.organizations ?? []; gsoc2022 = orgData2022.organizations ?? []; @@ -71,36 +69,34 @@ class _GoogleSummerOfCodeScreenState extends State { } } - void _clearAnimatedList() { for (var i = orgList.length - 1; i >= 0; i--) { _listKey.currentState?.removeItem( i, - (context, animation) => SizedBox.shrink(), + (context, animation) => SizedBox.shrink(), duration: Duration.zero, ); } } - void _populateAnimatedList(List organizations) { for (var i = 0; i < organizations.length; i++) { _listKey.currentState?.insertItem(i); } } - void searchTag(String searchTag) { setState(() { _clearAnimatedList(); orgList = _getOrganizationsByYear(selectedYear) - .where((element) => element.technologies?.contains(searchTag) == true || element.topics?.contains(searchTag) == true) + .where((element) => + element.technologies?.contains(searchTag) == true || + element.topics?.contains(searchTag) == true) .toList(); _populateAnimatedList(orgList); }); } - void search(String searchText) { setState(() { _clearAnimatedList(); @@ -108,14 +104,17 @@ class _GoogleSummerOfCodeScreenState extends State { orgList = _getOrganizationsByYear(selectedYear); } else { orgList = _getOrganizationsByYear(selectedYear) - .where((element) => element.name?.toLowerCase().contains(searchText.toLowerCase()) == true) + .where((element) => + element.name + ?.toLowerCase() + .contains(searchText.toLowerCase()) == + true) .toList(); } _populateAnimatedList(orgList); }); } - List _getOrganizationsByYear(int year) { switch (year) { case 2021: @@ -131,7 +130,6 @@ class _GoogleSummerOfCodeScreenState extends State { } } - Future _refresh() async { setState(() { _dataFetchFuture = getProjectData(); @@ -139,12 +137,14 @@ class _GoogleSummerOfCodeScreenState extends State { }); } - @override Widget build(BuildContext context) { - var height = MediaQuery.of(context).size.height; - var width = MediaQuery.of(context).size.width; + // var height = MediaQuery.of(context).size.height; + // var width = MediaQuery.of(context).size.width; + ScreenUtil.init( + context, + ); return RefreshIndicator( onRefresh: _refresh, @@ -161,7 +161,9 @@ class _GoogleSummerOfCodeScreenState extends State { return Center(child: Text('Error: ${snapshot.error}')); } else { return Padding( - padding: const EdgeInsets.symmetric(horizontal: 46, vertical: 16), + padding: EdgeInsets.symmetric( + horizontal: ScreenUtil().setWidth(46), + vertical: ScreenUtil().setHeight(16)), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -194,8 +196,9 @@ class _GoogleSummerOfCodeScreenState extends State { color: Color(0xFFEEEEEE), ), ), - contentPadding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 20.0), + contentPadding: EdgeInsets.symmetric( + vertical: ScreenUtil().setWidth(12), + horizontal: ScreenUtil().setHeight(20)), ), onFieldSubmitted: (value) { search(value.trim()); @@ -206,14 +209,14 @@ class _GoogleSummerOfCodeScreenState extends State { } }, ), - const SizedBox(height: 20), + SizedBox(height: ScreenUtil().setHeight(20)), SizedBox( - height: height * 0.2, - width: width, + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, child: GridView( physics: const NeverScrollableScrollPhysics(), gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( + const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, childAspectRatio: 1.5 / 0.6, crossAxisSpacing: 15, @@ -292,7 +295,7 @@ class _GoogleSummerOfCodeScreenState extends State { style: TextStyle(fontWeight: FontWeight.w400), ), Padding( - padding: const EdgeInsets.all(8.0), + padding: EdgeInsets.all(ScreenUtil().setWidth(8)), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -314,7 +317,12 @@ class _GoogleSummerOfCodeScreenState extends State { key: _listKey, initialItemCount: orgList.length, itemBuilder: (context, index, animation) { - return _buildAnimatedItem(context, index, animation, height, width); + return _buildAnimatedItem( + context, + index, + animation, + ScreenUtil().screenHeight, + ScreenUtil().screenWidth); }, ), ), @@ -328,8 +336,8 @@ class _GoogleSummerOfCodeScreenState extends State { ); } - - Widget _buildAnimatedItem(BuildContext context, int index, Animation animation, double height, double width) { + Widget _buildAnimatedItem(BuildContext context, int index, + Animation animation, double height, double width) { return SizeTransition( sizeFactor: animation, axis: Axis.vertical, @@ -364,10 +372,8 @@ class _GoogleSummerOfCodeScreenState extends State { } } - void main() { runApp(MaterialApp( home: GoogleSummerOfCodeScreen(), )); } - diff --git a/lib/programs screen/linux_foundation.dart b/lib/programs screen/linux_foundation.dart index 164fcc1..9bc0fa0 100644 --- a/lib/programs screen/linux_foundation.dart +++ b/lib/programs screen/linux_foundation.dart @@ -1,22 +1,18 @@ import 'dart:convert'; - - +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:opso/modals/book_mark_model.dart'; import 'package:opso/modals/linux_foundation_modal.dart'; import 'package:opso/widgets/linux_foundation_widget.dart'; - class LinuxFoundation extends StatefulWidget { const LinuxFoundation({super.key}); - @override State createState() => _LinuxFoundationState(); } - class _LinuxFoundationState extends State { bool isBookmarked = true; String currectPage = "/linux_foundation"; @@ -25,12 +21,10 @@ class _LinuxFoundationState extends State { List projectList = []; Future? getProjectListFunction; - Future initializeProjectLists() async { String response = await rootBundle .loadString('assets/projects/linux_foundation/linux_foundation.json'); - var jsonList = await json.decode(response); for (var data in jsonList) { modals.add(LinuxFoundationModal.fromMap(data)); @@ -39,7 +33,6 @@ class _LinuxFoundationState extends State { // setState(() {}); } - @override void initState() { super.initState(); @@ -47,7 +40,6 @@ class _LinuxFoundationState extends State { _checkBookmarkStatus(); } - Future _checkBookmarkStatus() async { bool bookmarkStatus = await HandleBookmark.isBookmarked(currentProject); setState(() { @@ -55,7 +47,6 @@ class _LinuxFoundationState extends State { }); } - void search(String searchText) { if (searchText.isEmpty) { setState(() { @@ -65,22 +56,21 @@ class _LinuxFoundationState extends State { } projectList = projectList .where((LinuxFoundationModal element) => - element.name.toLowerCase().contains(searchText.toLowerCase())) + element.name.toLowerCase().contains(searchText.toLowerCase())) .toList(); setState(() {}); } - Future _refresh() async { await initializeProjectLists(); setState(() {}); } - @override Widget build(BuildContext context) { - var height = MediaQuery.sizeOf(context).height; - var width = MediaQuery.sizeOf(context).width; + // var height = MediaQuery.sizeOf(context).height; + // var width = MediaQuery.sizeOf(context).width; + ScreenUtil.init(context, designSize: Size(360, 690)); return RefreshIndicator( onRefresh: _refresh, child: Scaffold( @@ -95,10 +85,10 @@ class _LinuxFoundationState extends State { }); ScaffoldMessenger.of(context).showSnackBar( SnackBar( - content: - Text(isBookmarked ? 'Bookmark added' : 'Bookmark removed'), - duration: - const Duration(seconds: 2), // Adjust the duration as needed + content: Text( + isBookmarked ? 'Bookmark added' : 'Bookmark removed'), + duration: const Duration( + seconds: 2), // Adjust the duration as needed ), ); if (isBookmarked) { @@ -118,7 +108,9 @@ class _LinuxFoundationState extends State { return const Center(child: CircularProgressIndicator()); } else if (snapshot.connectionState == ConnectionState.done) { return Padding( - padding: const EdgeInsets.symmetric(horizontal: 46, vertical: 16), + padding: EdgeInsets.symmetric( + horizontal: ScreenUtil().setWidth(46), + vertical: ScreenUtil().setHeight(16)), child: Column( children: [ TextFormField( @@ -151,8 +143,9 @@ class _LinuxFoundationState extends State { color: Color(0xFFEEEEEE), ), ), - contentPadding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 20.0), + contentPadding: EdgeInsets.symmetric( + vertical: ScreenUtil().setHeight(12), + horizontal: ScreenUtil().setWidth(40)), ), onFieldSubmitted: (value) { print("value is $value"); @@ -164,19 +157,20 @@ class _LinuxFoundationState extends State { } }, ), - const SizedBox(height: 20), + SizedBox(height: ScreenUtil().setHeight(20)), Expanded( // width: width, child: ListView.builder( itemCount: projectList.length, itemBuilder: (BuildContext context, int index) { return Padding( - padding: const EdgeInsets.symmetric(vertical: 10), + padding: EdgeInsets.symmetric( + vertical: ScreenUtil().setHeight(10)), child: LinuxFoundationWidget( // index: index + 1, modal: projectList[index], - height: height * 0.2, - width: width, + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, ), ); }, @@ -193,4 +187,3 @@ class _LinuxFoundationState extends State { ); } } - diff --git a/lib/programs screen/summer_of_bitcoin.dart b/lib/programs screen/summer_of_bitcoin.dart index 304c7ac..12d4a6b 100644 --- a/lib/programs screen/summer_of_bitcoin.dart +++ b/lib/programs screen/summer_of_bitcoin.dart @@ -1,46 +1,38 @@ import 'dart:convert'; - - +import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:opso/modals/sob_project_modal.dart'; import 'package:opso/widgets/sob_project_widget.dart'; import 'package:opso/widgets/year_button.dart'; - import '../widgets/SearchandFilterWidget.dart'; - class SummerOfBitcoin extends StatefulWidget { const SummerOfBitcoin({super.key}); - @override State createState() => _SummerOfBitcoinState(); } - class _SummerOfBitcoinState extends State { List sob2023 = []; List sob2022 = []; List sob2021 = []; int selectedYear = 2023; - List projectList = []; Future? getProjectFunction; - Future initializeProjectLists() async { String response = - await rootBundle.loadString('assets/projects/sob/sob2023.json'); + await rootBundle.loadString('assets/projects/sob/sob2023.json'); var jsonList = await json.decode(response); for (var data in jsonList) { sob2023.add(SobProjectModal.fromMap(data)); } projectList = sob2023; - response = await rootBundle.loadString('assets/projects/sob/sob2022.json'); jsonList = await json.decode(response); for (var data in jsonList) { @@ -53,23 +45,20 @@ class _SummerOfBitcoinState extends State { } } - @override void initState() { getProjectFunction = initializeProjectLists(); super.initState(); } - void searchTag(String searchTag) { projectList = projectList .where((SobProjectModal element) => - element.organization.contains(searchTag)) + element.organization.contains(searchTag)) .toList(); setState(() {}); } - void search(String searchText) { if (searchText.isEmpty) { switch (selectedYear) { @@ -89,14 +78,15 @@ class _SummerOfBitcoinState extends State { searchText = searchText.toLowerCase(); projectList = projectList .where((SobProjectModal element) => - element.name.toLowerCase().contains(searchText) || - element.mentor.toLowerCase().contains(searchText) || - element.organization.toLowerCase().contains(searchText) || - element.description.toLowerCase().contains(searchText) || - element.university.toLowerCase().contains(searchText)) + element.name.toLowerCase().contains(searchText) || + element.mentor.toLowerCase().contains(searchText) || + element.organization.toLowerCase().contains(searchText) || + element.description.toLowerCase().contains(searchText) || + element.university.toLowerCase().contains(searchText)) .toList(); setState(() {}); } + List languages = [ 'Rust miniscript', 'Core Lightning', @@ -119,10 +109,14 @@ class _SummerOfBitcoinState extends State { selectedYear = 2023; }); } + @override Widget build(BuildContext context) { - var height = MediaQuery.sizeOf(context).height; - var width = MediaQuery.sizeOf(context).width; + // var height = MediaQuery.sizeOf(context).height; + // var width = MediaQuery.sizeOf(context).width; + ScreenUtilInit( + designSize: Size(360, 690), + ); return RefreshIndicator( onRefresh: _refresh, child: Scaffold( @@ -136,8 +130,9 @@ class _SummerOfBitcoinState extends State { return const Center(child: CircularProgressIndicator()); } else if (snapshot.connectionState == ConnectionState.done) { return Padding( - padding: - const EdgeInsets.symmetric(horizontal: 46, vertical: 16), + padding: EdgeInsets.symmetric( + horizontal: ScreenUtil().setWidth(46), + vertical: ScreenUtil().setHeight(16)), child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, children: [ @@ -170,8 +165,9 @@ class _SummerOfBitcoinState extends State { color: Color(0xFFEEEEEE), ), ), - contentPadding: const EdgeInsets.symmetric( - vertical: 12.0, horizontal: 20.0), + contentPadding: EdgeInsets.symmetric( + vertical: ScreenUtil().setHeight(12), + horizontal: ScreenUtil().setWidth(20)), ), onFieldSubmitted: (value) { search(value.trim()); @@ -182,14 +178,14 @@ class _SummerOfBitcoinState extends State { } }, ), - const SizedBox(height: 20), + SizedBox(height: ScreenUtil().setHeight(20)), SizedBox( - height: height * 0.2, - width: width, + height: ScreenUtil().setHeight(50), + width: ScreenUtil().setWidth(360), child: GridView( physics: const NeverScrollableScrollPhysics(), gridDelegate: - const SliverGridDelegateWithFixedCrossAxisCount( + const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, childAspectRatio: 1.5 / 0.6, crossAxisSpacing: 15, @@ -238,8 +234,8 @@ class _SummerOfBitcoinState extends State { ], ), ), - const SizedBox( - height: 20, + SizedBox( + height: ScreenUtil().setHeight(20), ), Row( crossAxisAlignment: CrossAxisAlignment.center, @@ -250,7 +246,7 @@ class _SummerOfBitcoinState extends State { style: TextStyle(fontWeight: FontWeight.w400), ), Padding( - padding: const EdgeInsets.all(8.0), + padding: EdgeInsets.all(ScreenUtil().setHeight(8)), child: Row( crossAxisAlignment: CrossAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.spaceEvenly, @@ -281,8 +277,8 @@ class _SummerOfBitcoinState extends State { ) ], ), - const SizedBox( - height: 20, + SizedBox( + height: ScreenUtil().setHeight(20), ), Expanded( // width: width, @@ -293,8 +289,8 @@ class _SummerOfBitcoinState extends State { padding: const EdgeInsets.symmetric(vertical: 10), child: SobProjectWidget( modal: projectList[index], - height: height * 0.2, - width: width, + height: ScreenUtil().screenHeight * 0.2, + width: ScreenUtil().screenWidth, ), ); }, @@ -311,4 +307,3 @@ class _SummerOfBitcoinState extends State { ); } } - diff --git a/pubspec.lock b/pubspec.lock index 4a2f4ef..65f4ec1 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -174,6 +174,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + flutter_screenutil: + dependency: "direct main" + description: + name: flutter_screenutil + sha256: b372c35a772a1dc84142a3b9c5ee89a390834bd258e5e6a450d9b975b985d1c9 + url: "https://pub.dev" + source: hosted + version: "5.9.1" flutter_svg: dependency: "direct main" description: @@ -252,26 +260,26 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a" url: "https://pub.dev" source: hosted - version: "10.0.0" + version: "10.0.4" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.3" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "3.0.1" lints: dependency: transitive description: @@ -300,10 +308,10 @@ packages: dependency: transitive description: name: meta - sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" path: dependency: transitive description: @@ -473,10 +481,10 @@ packages: dependency: transitive description: name: test_api - sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f" url: "https://pub.dev" source: hosted - version: "0.6.1" + version: "0.7.0" timeline_tile: dependency: "direct main" description: @@ -593,10 +601,10 @@ packages: dependency: transitive description: name: vm_service - sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec" url: "https://pub.dev" source: hosted - version: "13.0.0" + version: "14.2.1" web: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 18512c6..40931d4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -41,6 +41,7 @@ dependencies: adaptive_theme: ^3.6.0 timeline_tile: ^2.0.0 flutter_svg: ^2.0.10+1 + flutter_screenutil: ^5.9.1 dev_dependencies: awesome_notifications: ^0.9.3+1