Docsity
Docsity

Prepara i tuoi esami
Prepara i tuoi esami

Studia grazie alle numerose risorse presenti su Docsity


Ottieni i punti per scaricare
Ottieni i punti per scaricare

Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium


Guide e consigli
Guide e consigli


Flutter - esericizio pratico, Esercizi di Sviluppo di Applicazioni Web

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

2022/2023

In vendita dal 04/09/2023

carla-boscolo
carla-boscolo 🇮🇹

4.5

(13)

520 documenti

1 / 24

Toggle sidebar

Questa pagina non è visibile nell’anteprima

Non perderti parti importanti!

bg1
Flutter 1
Flutter
flutter doctor //guardare se ci sono problemi
flutter create primo_project
cd primo_project
flutter run
---
cmd + option + L = formatting code
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
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18

Anteprima parziale del testo

Scarica Flutter - esericizio pratico e più Esercizi in PDF di Sviluppo di Applicazioni Web solo su Docsity!

Flutter 1

Flutter

flutter doctor //guardare se ci sono problemi

flutter create primo_project

cd primo_project

flutter run

cmd + option + L = formatting code

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

Flutter 2

https://www.youtube.com/watch?v=uSljGJGSl6w&list=PLiN8AiGp59yAG

iGmh4tOohobAnvDVxqj&index=4&ab_channel=MitchKoko

Installare Flutter su Android 2

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

Installare Flutter su Android 3

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 1

🪐

Creare codice facendo partire una

pagina intro

Data

main.dart

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 ); } }

intro_page.dart (vuota)

import 'package:flutter/material.dart';

class IntroPage extends StatelessWidget{ const IntroPage({ super.key });

@override Widget build(BuildContext context){ return Scaffold(

); } }

@May 24, 2023

Grafica base 1

Grafica base

Data

intro_page.dart

import 'package:flutter/material.dart';

class IntroPage extends StatelessWidget {

const IntroPage({super.key});

@override

Widget build(BuildContext context) {

return Scaffold(

body: Column(

children: [

//LOGO

Padding(

padding: const EdgeInsets.only(

left: 80.0, right: 80, bottom: 40, top: 160),

child: Image.asset('lib/images/orange.png'),

//TEXT

const Padding(

padding: const EdgeInsets.all(24.0),

child: Text(

"Noi consegniamo alla tua porta",

textAlign: TextAlign.center,

style: TextStyle(fontSize: 40, fontWeight: FontWeight.bold),

//TITOLO SOPRA BOTTONE

Text(

"Prodotti freschi ogni giorno",

const Spacer(),

//BOTTONE

Container(

decoration: BoxDecoration(

color: Colors.deepPurple,

borderRadius: BorderRadius.circular(12),

padding: EdgeInsets.all(24),

child: Text("Iniziamo",

style: TextStyle(color: Colors.white),

const Spacer(),

  • Grafica base
  • Grafica base

Inserire fonts 2

const Spacer(),

//BOTTONE

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(),

],

Aprire una seconda pagina 1

Aprire una seconda pagina

Data

intro_page.dart

//in Scaffold

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),

home_page.dart

import 'package:flutter/material.dart';

class HomePage extends StatelessWidget{

const HomePage({super.key});

@override

Widget build(BuildContext context){

return Scaffold();

@May 24, 2023

Creare un componente + Model 2

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(), ], ), ); } }

home_page.dart

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: [

Creare un componente + Model 3

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( builder: (context, value, child) { return GridView.builder( itemCount: value.shopItems.length, padding: EdgeInsets.all(12), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, childAspectRatio: 1 / 1.3, ), itemBuilder: (context, index) { return GroceryItemTile( itemName: value.shopItems[index][0], itemPrice: value.shopItems[index][1], imagePath: value.shopItems[index][2], color: value.shopItems[index][3], onPressed: (){ Provider.of(context, listen: false).addItemToCart(index); }, ); }, ); }, ), ) ], ), ), ); } }

Creare un componente + Model 5

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, ) ], ), ) ], ), ), ), ], ); }, ), ); } }

cart_model.dart (model)

import 'package:flutter/material.dart';

class CartModel extends ChangeNotifier { //LISTA ARTICOLI final List _shopItems = [ //[itemName, itemPrice, imagePath, color]

Creare un componente + Model 6

["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); } }

grocery_item_tile.dart (components)

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: [