
















Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Installare Flutter su Android, Installa SDK, Risoluzione problemi android, Inserire immagini nel codice, Creare codice facendo partire una pagina intro, Grafica base, Inserire fonts, Aprire una seconda pagina, Creare un componente + Model
Tipologia: Esercizi
1 / 24
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!

















Flutter
TEORIA
Name Data
💻 Installare Flutter su Android
🏞 Inserire immagini nel codice
🪐 Creare codice facendo partire una pagina intro
🍭 Grafica base
🔡 Inserire fonts
🏠 Aprire una seconda pagina
ℹ Creare un componente + Model
LINK UTILI
@May 24, 2023
@May 24, 2023
@May 24, 2023
@May 24, 2023
@May 24, 2023
https://www.youtube.com/watch?v=uSljGJGSl6w&list=PLiN8AiGp59yAG
iGmh4tOohobAnvDVxqj&index=4&ab_channel=MitchKoko
✗ Android license status unknown.
Run flutter doctor --android-licenses to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for
more details.
carlaboscolo@MacBook-Pro-di-Carla Downloads % flutter doctor --android-licenses
Configurare percorso SDK
File > carlaboscolo > cmd + shift +. -> apre file nascosti
creo file -> .zshrc
export PATH=$PATH:/Users/carlaboscolo/flutter/bin:$PATH
carlaboscolo@MacBook-Pro-di-Carla ~ % cd Downloads
carlaboscolo@MacBook-Pro-di-Carla Downloads % echo $SHELL
/bin/zsh
carlaboscolo@MacBook-Pro-di-Carla Downloads % touch .zshrc
copio percorso flutter di bin → per percorso del PATH
Risolvere problemi android studio
inserire sdk in android studio -> language (add sdk flutter) cliccando SDK manage
🪐
Creare codice facendo partire una
pagina intro
import 'package:flutter/material.dart'; import 'pages/intro_page.dart';
void main(){ runApp(const MyApp()); }
//Stateless Widget: widget immutabile. Dopo la costruzione non può cambiare, può solo essere ricostruito. class MyApp extends StatelessWidget{ const MyApp({super.key});
@override Widget build(BuildContext context){ return const MaterialApp( debugShowCheckedModeBanner: false, home: IntroPage(), //fa partire pagina intro ); } }
import 'package:flutter/material.dart';
class IntroPage extends StatelessWidget{ const IntroPage({ super.key });
@override Widget build(BuildContext context){ return Scaffold(
); } }
Data
intro_page.dart
Data
intro_page.dart
home_page.dart
@May 24, 2023
const SizedBox(height: 24), //TITOLO SOPRA BOTTONE Text( "Prodotti freschi ogni giorno", style: TextStyle(color: Colors.grey[600]), ), const Spacer(), //BOTTONE GestureDetector( //APRIRE NUOVA VIEW onTap: () => Navigator.pushReplacement(context, MaterialPageRoute( builder: (context) { return const HomePage(); }, )), child: Container( decoration: BoxDecoration( color: Colors.deepPurple, borderRadius: BorderRadius.circular(12), ), padding: const EdgeInsets.all(24), child: const Text( "Iniziamo", style: TextStyle(color: Colors.white), ), ), ), const Spacer(), ], ), ); } }
import 'package:flutter/material.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:kiwi_project/components/grocery_item_tile.dart'; import 'package:kiwi_project/model/cart_model.dart'; import 'package:kiwi_project/pages/cart_page.dart'; import 'package:provider/provider.dart';
class HomePage extends StatelessWidget { const HomePage({super.key});
@override Widget build(BuildContext context) { return Scaffold( floatingActionButton: FloatingActionButton( onPressed: () => Navigator.push( context, MaterialPageRoute( builder: (context) { return CartPage(); }, ), ), backgroundColor: Colors.black, child: Icon(Icons.shopping_bag), ), body: SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [
const SizedBox(height: 48), //BUONASERA const Padding( padding: EdgeInsets.symmetric(horizontal: 24.0), child: Text("Buonasera"), ), const SizedBox(height: 4), //TESTO Padding( padding: const EdgeInsets.symmetric(horizontal: 24.0), child: Text( "Ordini freschi per te", style: GoogleFonts.notoSerif( fontSize: 36, fontWeight: FontWeight.bold, ), ), ), const SizedBox(height: 24), //Divisore const Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Divider(), ),
const SizedBox(height: 24),
//Frutti + griglia const Padding( padding: EdgeInsets.symmetric(horizontal: 24.0), child: Text( "frutta fresca", style: TextStyle(fontSize: 16), ), ),
Expanded( child: Consumer
child: Container( decoration: BoxDecoration( color: Colors.green, borderRadius: BorderRadius.circular(8)), padding: EdgeInsets.all(24), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ //PREZZO Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( "Prezzo totale", style: TextStyle(color: Colors.green[100]), ), const SizedBox(height: 4), Text( "$" + value.calculateTotal(), style: const TextStyle( color: Colors.white, fontSize: 18, fontWeight: FontWeight.bold, ), ), ], ), //PAGA ORA BUTTON Container( decoration: BoxDecoration( border: Border.all(color: Colors.green.shade100), borderRadius: BorderRadius.circular(12), ), padding: EdgeInsets.all(12), child: Row( children: const [ Text( "Paga ora", style: TextStyle(color: Colors.white), ), Icon( Icons.arrow_forward_ios, size: 16, color: Colors.white, ) ], ), ) ], ), ), ), ], ); }, ), ); } }
import 'package:flutter/material.dart';
class CartModel extends ChangeNotifier { //LISTA ARTICOLI final List _shopItems = [ //[itemName, itemPrice, imagePath, color]
["Grapes", "4.00", "lib/images/grapes.png", Colors.deepPurple], ["Orange", "2.50", "lib/images/orange.png", Colors.orange], ["Pineapple", "12.00", "lib/images/pineapple.png", Colors.yellow], ["Water", "4.00", "lib/images/water.png", Colors.blue], ];
//LISTA CARRELLO UTENTE List _cartItems = [];
//OTTIENI LISTA ARTICOLI IN VENDITA get shopItems => _shopItems;
//OTTIENI LISTA CARRELLO get cartItems => _cartItems;
//AGGIUNGI AL CARRELLO void addItemToCart(int index){ _cartItems.add(_shopItems[index]); notifyListeners(); } //RIMUOVI DAL CARRELLO void removeItemFromCart(int index){ _cartItems.removeAt(index); notifyListeners(); } //CALCOLA PREZZO TOTALE String calculateTotal(){ double totalPrice = 0; for(int i= 0; i< _cartItems.length; i++){ totalPrice += double.parse(_cartItems[i][1]); } return totalPrice.toStringAsFixed(2); } }
import 'package:flutter/material.dart';
class GroceryItemTile extends StatelessWidget { //PARAMETRI final String itemName; final String itemPrice; final String imagePath; final color; void Function()? onPressed;
GroceryItemTile({ super.key, required this.itemName, required this.itemPrice, required this.imagePath, required this.color, required this.onPressed, });
@override Widget build(BuildContext context) { return Padding( padding: const EdgeInsets.all(12.0), child: Container( padding: EdgeInsets.all(20.0), decoration: BoxDecoration( color: color[100], borderRadius: BorderRadius.circular(12), ), child: Column(mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [