Flutter 完整示例

本文详述了Flutter项目的开发流程,包括代码分层、主题风格设定、插件使用、路由管理、网络数据交互、界面布局和刷新,以及开发中的注意事项。重点介绍了swiper插件的集成与使用,以及路由的静态和动态跳转方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过这一段对 Flutter 的了解和接触,掌握如何完整使用 Flutter 开发一个项目。实际上,在 Flutter 中,一切皆 widget,我们的界面都是由各种 widget 堆叠出来的。

一个 Flutter 工程涉及以下几个要点:

  • 工程项目代码分层
  • 主题风格
  • 插件
  • 路由
  • 网络数据交互
  • 界面布局及刷新

一、工程项目代码分层

一个正式的工程项目,它的代码必须做到分层,代码的分层体现了开始者的架构能力。

Flutter 工程的主要工作 lib 目录及 pubspec.yaml :

  • main.dart:Flutter 的入口函数
  • loading.dart:启动页,一般生存周期为3-5秒
  • app.dart:工程主文件
  • conf : 配置文件目前或一些宏定义数据文件目录
  • model : 数据模型目录
  • pages : 各 UI ,即 Widget 文件
  • service : 网络请求目录
  • style : 自定义风格文件(颜色、字体等)
  • utils : 工具目录

代码分层设计设计的合不合理,直接影响代码的可维护性和稳定性。

二、主题风格

Flutter 默认的主题是 蓝白 的风格,其他主题则需要配置。依项目而定,根据当前需要,配置一个 红灰 风格:

#main.dart
void main() => runApp(MaterialApp(
  debugShowCheckedModeBanner: false,
  title: 'Flutter实战',
  //自定义主题
  theme: mDefaultTheme,

));

//自定义主题
final ThemeData mDefaultTheme = ThemeData(
  primaryColor: Colors.redAccent,
);

Colors.redAccent 为系统主题,在 colors.dart 中定义:

static const MaterialAccentColor redAccent = MaterialAccentColor(
    _redAccentValue,
    <int, Color>{
      100: Color(0xFFFF8A80),
      200: Color(_redAccentValue),
      400: Color(0xFFFF1744),
      700: Color(0xFFD50000),
    },
  );
  static const int _redAccentValue = 0xFFFF5252;

当然也可以自定义一些风格或颜色,在工程 style 中 color.dart:

//产品颜色
class ProductColors{
  static const Color bgColor = Color(0xFFFFFFFF);
  static const divideLineColor = Color.fromRGBO(245, 245, 245, 1.0);
  static const typeColor = Color.fromRGBO(182, 9, 9, 1.0);
  static const piontColor = Color.fromRGBO(132, 95, 63, 1.0);
}

三、插件

开发者不可能对每个功能都自已造轮子,选取合适的轮子,对于项目来说,可以达到事半功倍的效果。

3.1 添加第三方库

打开 pubspec.yaml 文件添加三方库,可以 在 https://pub.dev/flutter (需要翻墙)上找到许多开源软件包

dependencies:
  flutter:
    sdk: flutter

  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2
  http: ^0.12.0
  flutter_webview_plugin: ^0.3.0
  flutter_swiper: 1.1.4
  • http : 网络请求插件
  • flutter_webview_plugin : 一些静态页面的加载,使用webview
  • flutter_swiper : 动画轮播效果
3.2 导入
swiper 插件

点击 Packages get 获取刚添加的包。

这样就可以使用这个库了。

四、路由

路由主要用于界面的切换及跳转,分为 静态路由 和 动态路由

  • 静态路由:界面的跳转不带附加参数
  • 动态路由:界面的跳转可携带附加参数
</
以下是一个使用Flutter开发示例代码: ```dart import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:flutter_webview_plugin/flutter_webview_plugin.dart'; import 'package:flutter_swiper/flutter_swiper.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter示例', theme: ThemeData( primarySwatch: Colors.blue, ), home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { List<String> repositories = []; // 用于存储库列表 @override void initState() { super.initState(); fetchRepositories(); // 获取存储库列表 } void fetchRepositories() async { // 使用http库发送网络请求 var response = await http.get('https://api.github.com/users/myusername/repos'); if (response.statusCode == 200) { // 如果请求成功,解析返回的JSON数据 List<dynamic> json = jsonDecode(response.body); List<String> repos = json.map((repo) => repo['name']).toList(); setState(() { repositories = repos; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('存储库列表'), ), body: ListView.builder( itemCount: repositories.length, itemBuilder: (context, index) { return ListTile( title: Text(repositories[index]), onTap: () { // 导航到存储库详情页面 Navigator.push( context, MaterialPageRoute( builder: (context) => RepositoryDetailPage(repositoryName: repositories[index]), ), ); }, ); }, ), ); } } class RepositoryDetailPage extends StatelessWidget { final String repositoryName; RepositoryDetailPage({required this.repositoryName}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text(repositoryName), ), body: WebView( url: 'https://github.com/myusername/$repositoryName', ), ); } } ``` 这个示例代码展示了如何使用Flutter开发一个简单的应用程序。它包括显示用户的存储库列表,显示用户个人资料,以及显示每个存储库的详细信息。代码中使用了一些常用的Flutter库,如http用于网络请求,flutter_webview_plugin用于加载静态页面,flutter_swiper用于实现轮播效果。你可以根据自己的需求进行修改和扩展。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [flutter_github:使用GitHub API的Flutter项目示例](https://download.csdn.net/download/weixin_42104947/18224673)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Flutter 完整示例](https://blog.csdn.net/Android_SE/article/details/100773959)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值