当前位置: 首页 > news >正文

Flutter项目试水

1基本介绍

本文章在构建您的第一个 Flutter 应用指导下进行实践

可作为项目实践的辅助参考资料

Flutter 是 Google 的界面工具包,用于通过单一代码库针对移动设备、Web 和桌面设备构建应用。在此 Codelab 中,您将构建以下 Flutter 应用。

该应用可以生成好听的英文名,例如“newstay”“lightstream”“mainbrake”或“graypine”。用户可以请求生成下一个英文名,收藏当前英文名,以及在单独的页面上查看收藏的英文名列表。该应用可自适用不同的屏幕尺寸。

学习内容

  • Flutter 的基本工作原理

  • 在 Flutter 中创建布局

  • 关联用户互动(如按下按钮)与应用行为

  • 让 Flutter 代码井然有序

  • 让应用能够自适用不同的屏幕尺寸

  • 让应用具有一致的外观和风格

您将从一个基本的基架开始构建应用,这样您就可以直接跳到感兴趣的部分。

d6e3d5f736411f13.png

2设置您的 Flutter 环境

Flutter环境配置,见在macOS上构建Flutter iOS应用-CSDN博客

3创建项目

 import 'package:english_words/english_words.dart';
 import 'package:flutter/material.dart';
 import 'package:provider/provider.dart';
 ​
 void main() {
   runApp(MyApp());
 }
 ​
 class MyApp extends StatelessWidget {
   const MyApp({super.key});
 ​
   @override
   Widget build(BuildContext context) {
     return ChangeNotifierProvider(
       create: (context) => MyAppState(),
       child: MaterialApp(
         title: 'Namer App',
         theme: ThemeData(
           useMaterial3: true,
           colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepOrange),
         ),
         home: MyHomePage(),
       ),
     );
   }
 }
 ​
 class MyAppState extends ChangeNotifier {
   var current = WordPair.random();
 }
 ​
 class MyHomePage extends StatelessWidget {
   @override
   Widget build(BuildContext context) {
     var appState = context.watch<MyAppState>();
 ​
     return Scaffold(
       body: Column(
         children: [
           Text('A random idea:'),
           Text(appState.current.asLowerCase),
         ],
       ),
     );
   }
 }

简单实现基本框架

4添加按钮

在3的基础上添加了next按钮,类似这样的效果迁移到模拟器上

image-20250211170407587

5改善应用外观

水平垂直居中,字母格式、颜色调整

image-20250211170534140

image-20250211170550279

image-20250211170604538

6添加功能

加入like功能,将按钮关联至 toggleFavorite()

image-20250211170643928

7添加侧边导航栏

image-20250211170741762

8添加新页面

image-20250211170801797

9后续步骤

  • 基于您在此 Codelab 中编写的应用,开展进一步的尝试和探索。

  • 查看此高级版本的同一应用的代码,了解如何添加动画列表、渐变、淡出淡入效果等。

相关文章:

  • 【Framework系列之Client】LoadManager、ResourceManager介绍
  • 新的面试题CSS
  • leetcode 416. 分割等和子集
  • DeepSeek-R1:通过强化学习提升大型语言模型推理能力的探索
  • 【机器学习】监督学习-决策树-CART(Classification and Regression Tree,分类与回归树)详尽版
  • 兔兔答题应用于微信考试、付费考试、社会调查问卷、明星知识问答、员工培训考核、模拟自测、企业面试、试题库等多种场景。
  • 【Elasticsearch】index索引相关模块
  • 使用pyCharm创建Django项目
  • 【c++】字符串 string 以及与右值结合
  • 每日一题——字符串的排列
  • STM32 HAL库UART串口数据接收实验
  • kibana es 语法记录 elaticsearch
  • Python--常见库与函数
  • Java使用Redis
  • Go语言中的panic
  • 数字内容体验案例解析与转化率提升策略
  • 问卷数据分析|SPSS实操之二元logistics分析
  • Matlab 多项式曲线拟合(三维)
  • 蓝桥杯 Java B 组之日期与时间计算(闰年、星期计算)
  • PHP场地预定小程序
  • 美官员鼓动他国“退出WHO”遭冷遇,鲁比奥辩称美国没“退群”
  • 外交部:中方高度重视同太平洋岛国的关系,双方友好合作关系正不断深化和发展
  • 太原一居民手机号被企业公示常遭骚扰,负责人称是用过的旧号
  • 春决火爆的背后,PEL如何做大这块电竞蛋糕
  • 李在明遭遇暗杀威胁,韩国警方锁定两名嫌疑人
  • 六旬老人举报违建后遭蒙面袭击续:海南陵水县住建局已暂停俩房产项目网签