Flutter 完整示例

40个flutter入门实例详解(一) 1.计数器实例 //导入Material UI组件库 import 'package:flutter/material.dart'; //import 'package:english_words/english_words.dart'; //应用程序的入口runApp方法,启动flutter项目,runApp接收一个Widget参数 void main() { runApp(MyApp()); } //根组件,继承了StatelessWidget类 class MyApp extends Stat 阅读详情

经过这一段对 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 获取刚添加的包。

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

四、路由

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

  • 静态路由:界面的跳转不带附加参数
  • 动态路由:界面的跳转可携带附加参数
4.1 路由初始化
void main() => runApp(MaterialApp(
  debugShowCheckedModeBanner: false,
  title: 'Flutter实战',
  //自定义主题
  theme: mDefaultTheme,

  //添加路由
  routes: <String,WidgetBuilder>{
    "app": (BuildContext context) => App(),
    "company_info":(BuildContext context) => WebviewScaffold(
      url: "https://www.baidu.com",
      appBar: AppBar(
        title: Text('公司介绍'),
        leading: IconButton(
            icon: Icon(Icons.home),
            onPressed: (){
              //路由到主界面
              Navigator.of(context).pushReplacementNamed('app');
            },
        ),
      ),
    ),
  },
  //指定加载页面
  home: LoadingPage(),

));
4.2 静态路由
Navigator.of(context).pushReplacementNamed('company_info');
4.3 动态路由
Navigator.push(context,MaterialPageRoute(builder: (context) => AboutContactPage()));

或者

Navigator.push(context,MaterialPageRoute(builder: (context) => NewsDetailPage(item: item)),

数据接收处理:

class NewsDetailPage extends StatelessWidget{
  final NewsItemModal item;

  NewsDetailPage({Key key,@required this.item}) : super(key:key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(item.title),
      ),
      body:  Padding(
        padding: EdgeInsets.all(16.0),
        child: Text(item.content),
      ),
    );
  }
}

五、网络数据交互

网络数据交互一般涉及 URL、数据模型、数据交互模式(Get、Post)等

5.1 URL 定义

在配置中定义宏变量

class Config{
  static const String IP = '192.168.2.5';
  static const String PORT = '8080';
}
5.2 数据模型
//新闻列表项数据转换
class NewsItemModal{
  String author;//作者
  String title;//标题
  String content;//内容

  NewsItemModal({
    this.author,
    this.title,
    this.content,
  });

  factory NewsItemModal.fromJson(dynamic json){
    return NewsItemModal(
      author: json['author'],
      title: json['title'],
      content: json['content'],
    );
  }
}

//新闻列表数据转换
class NewsListModal{

  List<NewsItemModal> data;
  NewsListModal(this.data);

  factory NewsListModal.fromJson(List json){
    return NewsListModal(
        json.map((i) => NewsItemModal.fromJson((i))).toList()
    );
  }
}
5.3 数据交互模式
import 'package:http/http.dart' as http;
import 'dart:convert';
import '../conf/configure.dart';

//获取新闻数据
getNewsResult() async {
  String url = 'http://' + Config.IP + ':' + Config.PORT + '/?action=getNews';

  var res = await http.get(url);
  String body = res.body;

  var json= jsonDecode(body);
  print(json);

  return json['items'] as List;
}

六、界面布局及刷新

6.1 启动页加载

一个存在 3 – 5 秒的界面

class LoadingPage extends StatefulWidget{
  @override
  _LoadingState createState() => _LoadingState();
}

class _LoadingState extends State<LoadingPage>{

  @override
  void initState(){
    super.initState();

    //在加载页面停顿3秒
    Future.delayed(Duration(seconds: 3),(){
      print('Flutter企业站启动...');
      Navigator.of(context).pushReplacementNamed("app");
    });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: Center(
        child: Stack(
          children: <Widget>[
            //加载页面背景图
            Image.asset(
              'assets/images/loading.jpeg'
            ),

            Center(
              child: Text(
                'Flutter',
                style: TextStyle(
                  color: Colors.white,
                  fontSize: 36.0,
                  decoration: TextDecoration.none
                ),
              ),
            ),
          ],
        ),
      ),
    );
  }
}
6.2 轮播图片

轮播图片应用很广泛,如广告宣传之类。

在资源配置图片中,添加图片

 # To add assets to your application, add an assets section, like this:
  assets:
  - assets/images/loading.jpeg
  - assets/images/company.jpg

  #轮播图片
  - assets/images/banners/1.jpeg
  - assets/images/banners/2.jpeg
  - assets/images/banners/3.jpeg
  - assets/images/banners/4.jpeg

使用 Swiper 插件

import 'package:flutter/material.dart';
import 'package:flutter_swiper/flutter_swiper.dart';

class BannerWidget extends StatelessWidget{

  //图片路径
  List<String> banners = <String>[
    'assets/images/banners/1.jpeg',
    'assets/images/banners/2.jpeg',
    'assets/images/banners/3.jpeg',
    'assets/images/banners/4.jpeg',
  ];

  @override
  Widget build(BuildContext context) {

    //计算宽高 按比例
    double width = MediaQuery.of(context).size.width;
    double height = width * 540.0 / 1080.0;
    return Container(
      width: width,
      height: height,
      //轮播组件
      child: Swiper(
        itemBuilder: (BuildContext context, index){
          return Container(
            //图片左右内边距
            margin: EdgeInsets.only(left: 5, right: 5),
            child: Image.asset(
              banners[index],
              width: width,
              height: height,
              fit: BoxFit.cover,
            ),
          );
        },
        //轮播数量
        itemCount: banners.length,
        //方向
        scrollDirection: Axis.horizontal,
        //是否自动播放
        autoplay: true,
      ),
    );
  }
}
6.3 主界面(含导航栏)
import 'package:flutter/material.dart';
import 'pages/about_us_page.dart';
import 'pages/home_page.dart';
import 'pages/news_page.dart';
import 'pages/product_page.dart';

class App extends StatefulWidget {
  @override
  AppState createState() => AppState();
}

class AppState extends State<App> {
  //当前选择页面索引
  var _currentIndex = 0;

  HomePage homePage;
  ProductPage productPage;
  NewsPage newsPage;
  AboutUsPage aboutUsPage;

  //根据当前索引返回不同的页面
  currentPage(){
    switch(_currentIndex){
      case 0:
        if(homePage == null){
          homePage = HomePage();
        }
        return homePage;
      case 1:
        if(productPage == null){
          productPage = ProductPage();
        }
        return productPage;

      case 2:
        if(newsPage == null){
          newsPage = NewsPage();
        }
        return newsPage;
      case 3:
        if(aboutUsPage == null){
          aboutUsPage = AboutUsPage();
        }
        return aboutUsPage;

    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter企业站实战'),
        leading: Icon(Icons.home),
        actions: <Widget>[
          //右侧内边距
          Padding(
            padding: EdgeInsets.only(right: 20.0),
            child: GestureDetector(
              onTap: () {},
              child: Icon(
                Icons.search,
              ),
            ),
          ),
        ],
      ),

      body: currentPage(),

      //底部导航栏
      bottomNavigationBar: BottomNavigationBar(
          //通过fixedColor设置选中item 的颜色
          type: BottomNavigationBarType.fixed,
          currentIndex: _currentIndex,
          onTap: ((index) {
            setState(() {
              _currentIndex = index;
            });
          }),
          //底部导航栏
          items: [
            BottomNavigationBarItem(
              title: Text(
                '首页',
              ),
              icon: Icon(Icons.home),
            ),
            BottomNavigationBarItem(
              title: Text(
                '产品',
              ),
              icon: Icon(Icons.apps),
            ),
            BottomNavigationBarItem(
              title: Text(
                '新闻',
              ),
              icon: Icon(Icons.fiber_new),
            ),
            BottomNavigationBarItem(
              title: Text(
                '关于我们',
              ),
              icon: Icon(Icons.insert_comment),
            ),
          ]),
    );
  }
}
6.4 ListView 的应用
import 'package:flutter/material.dart';
import '../model/news.dart';
import '../services/news.dart';
import 'news_detail_page.dart';

//新闻页面
class NewsPage extends StatefulWidget {
  @override
  NewsPageState createState() => NewsPageState();
}

class NewsPageState extends State<NewsPage> {
  NewsListModal listData = NewsListModal([]);

  //获取新闻列表数据
  void getNewsList() async {
    var data = await getNewsResult();
    NewsListModal list = NewsListModal.fromJson(data);

    setState(() {
      listData.data.addAll(list.data);
    });
  }

  @override
  void initState() {
    getNewsList();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      //带分隔线的List
      body: ListView.separated(
        //排列方向 垂直和水平
        scrollDirection: Axis.vertical,
        //分隔线构建器
        separatorBuilder: (BuildContext contex, int index) => Divider(
              height: 1.0,
              color: Colors.grey,
            ),
        itemCount: listData.data.length,
        //列表项构建器
        itemBuilder: (BuildContext contex, int index) {

          //新闻列表项数据
          NewsItemModal item = listData.data[index];

          return ListTile(
            title: Text(item.title),
            subtitle: Text(item.content),
            leading: Icon(Icons.fiber_new),
            trailing: Icon(Icons.arrow_forward),
            contentPadding: EdgeInsets.all(10.0),
            enabled: true,
            //跳转至新闻详情页面
            onTap: () {
              Navigator.push(
                context,
                MaterialPageRoute(
                    builder: (context) => NewsDetailPage(item: item)),
              );
            },
          );
        },
      ),
    );
  }
}
6.5 文本框操作

含文本框配置及数据操作

import 'package:flutter/material.dart';
import '../services/contact.dart';

class AboutContactPage extends StatefulWidget{
  @override
  AboutContactPageState createState() => AboutContactPageState();
}

class AboutContactPageState extends State<AboutContactPage>{

  //文本编辑控制器
  TextEditingController controller = TextEditingController();

  //提交数据
  void commit(){
    if(controller.text.length == 0){
      showDialog(context: context,builder: (context) => AlertDialog(title: Text('请输入内容'),),);
    } else{
      var info = contactCompany(controller.text);
      print(info);
    }
  }

  @override
  Widget build(BuildContext context) {

    return Scaffold(
      appBar: AppBar(
        title: Text('给我留言'),
      ),
      body: Container(
        color: Colors.white,
        child: Column(
          mainAxisAlignment: MainAxisAlignment.start,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Image.asset(
              'assets/images/company.jpg',
              fit: BoxFit.cover,
            ),
            SizedBox(
              height: 40.0,
            ),
            SizedBox(
              width: 380.0,
              child: TextField(
                controller: controller,
                decoration: InputDecoration(
                  hintText: '请留言',
                  labelText: '请留言',
                  border: OutlineInputBorder(),
                  prefixIcon: Icon(Icons.person),
                ),
              ),
            ),
            SizedBox(
              height: 40.0,
            ),
            SizedBox(
              width: 220.0,
              height: 48.0,
              child: RaisedButton(
                child: Text('给我们留言',style: TextStyle(fontSize: 16.0),),
                color: Theme.of(context).primaryColor,//Colors.redAccent,
                colorBrightness: Brightness.dark,
                textColor: Colors.white,
                padding: EdgeInsets.only(
                  left: 20.0,
                  right: 20.0,
                  top: 5.0,
                  bottom: 5.0,
                ),
                shape: RoundedRectangleBorder(
                  side: BorderSide(
                    width: 1.0,
                    color: Colors.white,
                    style: BorderStyle.solid,
                  ),
                  borderRadius: BorderRadius.only(
                    topRight: Radius.circular(4.0),
                    topLeft: Radius.circular(4.0),
                    bottomLeft: Radius.circular(4.0),
                    bottomRight: Radius.circular(4.0),
                  ),
                ),
                onPressed: (){
                  commit();
                },
              ),
            ),
          ],
        ),
      ),
    );
  }
}

七、注意点

  • => 是 Dart 中单行函数的简写
  • StatelessWidget 代表只有一种状态的组件,与之对应的是 StatefulWidget(表示可能有多种状态)。
  • 在 Widget 组件中都是通过 build 方法来描述自己的内部结构。这里的 build 表示构建 MyApp 中使用的是 MaterialApp 的系统组件。
  • home标签的值:Scaffold 是 Material library 中提供的一个组件,我们可以在里面设置导航栏、标题和包含主屏幕 widget 树的 body 属性。可以看到这里是在页面上添加了AppBar 和一个 Text。
  • Center 是一个可以把子组件放在中心的组件
flutter 小实例 flutter 阅读详情

相关推荐

flutter 小案例

flutter

XixiziMeng的博客 1159

Flutter实战】文本组件及五大案例

老孟导读:大家好,这是【Flutter实战】系列文章的第二篇,这一篇讲解文本组件,文本组件包括文本展示组件(Text和RichText)和文本输入组件(TextField),基础用法和五个案例助你快速掌握。 第一篇链接:【Flutter实战】移动技术发展史 Text Text是显示文本的组件,最常用的组件,没有之一。基本用法如下: Text('老孟') 注意:Text组件一定要包裹在Scaffold组件下,否则效果如下: 文本的样式在style中设置,类型为TextStyle,Te..

老孟Flutter 4395

【Flutter】 Material 3 详解(四)完整的导航栏示例 紧凑布局、中等布局、扩展布局中的navigation bar、Navigation rail、navigation drawer

在我们的专栏之前的文章中,对于Material 3的组件,在代码层面进行说明。 然而这对于我们从零到一开发到上线应用显然是不够的,在接下来的几篇文章中,我们会对Material 3的设计风格进行详细说明,让你做到能够使用基于Material 3的设计风格和组件进行应用的开发。

Code Metaverse 828

【Flutter】Flutter 混合开发 ( Flutter 与 Native 通信 | 完整代码示例 )

前言、 一、Android 端完整代码示例、 二、Flutter 端完整代码示例、 三、相关资源、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1386

Flutter 示例应用集:完整开源Flutter项目与应用展示

本文还有配套的精品资源,点击获取 简介:该项目名为"flutter_example_apps",汇集了众多开源的Flutter应用和项目,旨在展示Flutter框架的多样功能以及Dart语言的实用性,并涵盖了Firebase集成的示例。Flutter是一个开源的UI工具包,使开发者能用同一套代码库构建跨平台的高性能原生应用。它使用Dart语言,提供了强大的UI构建能力以及跨...

weixin_33298352的博客 2730

Flutter购物清单应用:从设计到实践的完整示例

Flutter项目遵循特定的文件夹结构,这对于保持代码组织和项目维护至关重要。基础的Flutter项目结构包括以下几个核心部分:lib/:存放应用的源代码(Dart文件)。assets/:放置应用所需资源文件,如图片、音频等。test/:存放自动化测试文件。:声明应用的元数据、依赖等。理解项目结构对于后续的开发和维护至关重要,因为一个清晰的项目结构能大幅提升开发效率和代码的可读性。Dart 是一种强类型语言,这意味着每种变量和对象的类型在编译时都是已知的。

weixin_42576804的博客 427

【Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )

一、FutureBuilder 简介、 二、处理 Flutter 中的中文乱码、 三、完整代码示例、 四、相关资源、

让 学习 成为一种 习惯 ( 韩曙亮 の 技术博客 ) 1466

超实用Flutter精美UI项目实战:快速入门与高效开发完整示例

Flutter不仅仅是一个UI框架,它代表着一种全新的移动开发范式。从自绘引擎到声明式编程,从健全类型系统到现代化状态管理,每一个设计决策都在指向同一个目标:让开发者能够专注于创造价值,而非应付平台差异。当你看到同一套代码在手机、平板、网页甚至桌面端都能完美运行时,那种成就感是无与伦比的。而这,正是技术进步带给我们的最大礼物 🎁。本文还有配套的精品资源,点击获取简介:Flutter是由Google推出的开源跨平台移动开发框架,支持构建高性能、高保真的iOS和Android应用。

weixin_33419305的博客 498

30+ Flutter 示例项目教程:从入门到精通的完整指南

Flutter-by-example 是一个包含简单、基础 Flutter 应用的开源项目,每个应用都专注于演示一个特定的 Flutter 概念。本教程将带你探索这个项目的核心价值、如何快速开始使用,并深入了解其中的关键示例和最佳实践,帮助你轻松掌握 Flutter 开发技能。 ## 🚀 为什么选择 Flutter-by-example 学习 Flutter-by-example 项目通过一

gitblog_00364的博客 1031

非常棒flutter项目,flutter漂亮UI,快速上手,flutter快速开发例子,非常就拿对flutter学习的demo

非常棒的一个开源flutter初学项目,内含完整UI设计图,距离真实项目只差更改名称

使用Gromacs进行蛋白和配体小分子的动力学模拟+结果分析全流程教程

先选protein,选择non-water,使用pymol打开delWater.pdb,输入util.ss('all')展示cartoon,点击file-Export Moive as-MPEG。这一步完成后,文件夹中会出现以下三个文件,其中gro 文件用于记录蛋白的初始坐标,top 文件记录蛋白的拓扑信息和力场信息,itp 与top文件类似。接下来使用Spdbv软件打开蛋白,如果蛋白中存在原子缺失情况,就会出现以下的提示,如果不存在就不会显示,同时保存为rep.pdb。

weixin_46587777的博客 2849

Flutter 新版 Google Sign-In 插件完整解析(含示例讲解)

Flutter的google_sign_in插件进行了重大更新,围绕状态监听统一化、多端API一致性和授权流程灵活化三大方向重构。新版引入Authentication Events流实时监听认证状态,新增GoogleSignInAuthorizationClient统一处理授权操作,强化Web支持实现多端API统一,并新增轻量级认证提升用户体验。本文通过示例代码详细解析了初始化与事件监听、Scope授权检查、People API调用以及动态Scope授权请求等核心流程。新版插件显著改善了跨平台开发体验,为开

爱喝水程序员的博客 511

FOFA奇技淫巧:从搜索语法到实战场景的深度挖掘

本文深入探讨了FOFA搜索语法在网络空间测绘中的高效应用,从基础语法到实战场景的深度挖掘。通过渗透测试、威胁狩猎、资产发现等实际案例,展示了如何利用FOFA精准定位目标系统、识别蜜罐、追踪威胁,并提供了合规使用指南和性能优化技巧,助力安全工作者提升效率。

weixin_32428571的博客 235

webview_flutter实战指南:用Flutter官方WebView插件内嵌网页,附JS互调完整示例

webview_flutter 是 Flutter 团队维护的官方 WebView 插件,可在 Flutter 应用中一行代码内嵌任意网页,并支持 Dart 与 JavaScript 双向互调。本文面向新手,从安装配置讲到 JS 互调完整示例,帮你 10 分钟跑通 Flutter WebView 实战。 ## 一、为什么选择官方 webview_flutter 插件? 内嵌网页是 App 的高

gitblog_00421的博客 379

基于Web的智能家居(源码+开题)

实践上,智能家居系统的普及和应用将极大改善人们的居住体验,提高生活质量,同时也有助于促进智能家居产业链的发展和完善,为社会经济发展注入新的活力。此外,本研究还将对基于Web的智能家居系统的用户体验进行深入研究,通过用户调研和数据分析,不断优化系统功能和界面设计,提升用户的使用体验和满意度。针对以上问题,本研究将综合运用物联网、云计算、大数据等新一代信息技术,通过系统架构设计、功能模块开发、安全性保障、用户体验优化等多个方面的研究工作,力求为基于Web的智能家居系统的研发和应用提供全面而有效的解决方案。

sryue06的博客 1902

无线通信入门:3种键控法(ASK/FSK/PSK)原理图解与实战对比

本文深入解析无线通信中ASK、FSK、PSK三种基础键控法的原理与应用。通过图解对比,阐明幅移键控(ASK)简单低成本但抗干扰差,频移键控(FSK)稳健且应用广泛,相移键控(PSK)高效但复杂。文章结合实战场景,为物联网和嵌入式开发者在选型时提供关键指导,帮助平衡数据速率、成本、功耗与抗干扰需求。

weixin_29274969的博客 187

【Flutter】编写第一个 Flutter 应用(官方示例完整代码版)

import 'package:english_words/english_words.dart'; import 'package:flutter/material.dart'; //文档 // https://flutter.cn/docs/get-started/codelab void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildCont.

大白菜啊 1344

adas硬件_ADAS智能辅助驾驶系统硬件在环(HIL)测试之硬件介绍

这篇主要分享的是ADAS融合系统的HIL测试系统的硬件结构及其作用,其主要包括上位机、机柜、雷达模拟器系统、雷达暗箱系统以及视频暗箱。 上位机 上位机主要运行HIL测试系统的相关软件,测试人员所有的前期准备工作与测试操作均在上面进行,并监控测试结果,其通过网口实现与NI实时机的通信,上位机将VeriStand项目工程下载至NI实时机运行。机柜 机柜主要由可编程电源...

weixin_39580748的博客 2239

Flutter基础-Make authenticated requests

Add authorization headers Future<http.Response> fetchPost() { return http.get( 'https://jsonplaceholder.typicode.com/posts/1', // Send authorization headers to the backend. headers...

AdrianAndroid的专栏 250

基于Simulink的雷达跟踪系统仿真(附源码)

此示例包含对雷达系统的基本特征进行建模的子系统。该模型是用于目标位置和速度检测的雷达系统的典型模型。该示例包括雷达脉冲发生器、射频发射器子系统、移动目标的 Simulink 表示、射频接收器和接收模块(Rx 模块)。

珞瑜的博客 3512

某智能物流无人值守系统 ExportReport SQL注入漏洞复现

某智能物流无人值守系统 ExportReport存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用 SQL 注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。

0xSec 818

Flutter stocks 示例的 i18n 完整实践:ARB 文件、l10n.yaml 配置与 flutter gen-l10n 代码生成原理

本文基于 Flutter 仓库中 stocks 演示应用的本地化文档 [regenerate.md](https://link.gitcode.com/i/a187b0bbb678ec2ce0b27de501fdcfd4),完整讲解如何用 ARB 资源文件描述英文/西班牙语文案、如何用 `l10n.yaml` 配置本地化工具、以及 `flutter gen-l10n` 如何根据这些配置生成 `St

gitblog_00664的博客 579

自然语言处理:长文本场景下的关键词抽取实践

自然语言处理:长文本场景下的关键词抽取实践

丨汀、的博客 2076

Flutter 页面跳转样式全解析(含完整示例,新手也能懂)

本文全面解析Flutter中的页面跳转样式,涵盖5大维度:原生基础样式、自定义动画样式、第三方库样式、特殊交互样式和跨平台适配方案。详细介绍了15+种跳转效果,包括iOS/Android原生样式、8种自定义过渡动画、Hero无缝联动、模态框跳转等,每种样式均提供完整代码示例和适用场景说明。文章还对比了原生路由与GetX/GoRouter等第三方库的优缺点,给出了跨平台适配建议和常见问题解决方案,适合从新手到进阶开发者参考使用,帮助打造更流畅的用户体验。

qq_64594604的博客 1101

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Flutter Form表单

目录 参数详解 代码示例 效果图 完整代码 参数详解 Flutter中的Form是一个容器,里面包含一个或多个TextFormField。TextFormField是表单中使用的Input输入框。 TextFormField的属性基本与TextField相同。 属性 作用 onSaved 监听输入变化 代码示例 body: Contain...

马志武的博客 4008

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

上一篇: 去抖音面试被问到硬编码与软编码区别,如何选取硬编与软编?
下一篇: Android 应用之安全开发
初壹十五a
博客等级 码龄8年 146粉丝 257原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值