flutter 学习之项目一

这篇博客详细介绍了如何使用Flutter开发一款诗词应用。首先从网络获取诗词数据,然后创建项目并设置首页、游戏页面和设置页面。游戏功能允许用户排列打乱的诗词字,完成挑战并分享成就。设置页面允许用户录入诗词和自定义详情页背景。
摘要由CSDN通过智能技术生成

本博客主要是展示一款诗词类app创建路程,首先从网络上吧啦一些诗词数据,然后进行页面的UI编辑,初期功能有首页【展示所有诗词条目,点击进入诗词详情页面】,游戏页面【通过读取本地的数据选取诗词,然后把内容中的每一个字打乱顺序随机展示,用户通过排列,进行编订出正确的诗词,通关后,可以点击下一关,另外添加分享功能,可以分享用户通关】,设置页面【1用户可以自己录入诗词到app中,并且展示到UI上 2修改所有诗词详情页面的背景图片】
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1 创建项目

打开终端,输入命令,创建项目名为ancient_poetry的项目

cd cd Desktop/FlutterPro
flutter create ancient_poetry

2 打开项目

a)用Visual Studio Code打开项目,创建4个文件夹,文件夹的名字为home、other、game、setting
b)在other 文件夹下创建一个名字为bottomNavigationBar.dart的文件
在这个名字为bottomNavigationBar.dart文件中编写顶部导航和底部导航相关代码

import 'package:flutter/material.dart';
import '../home/home.dart';
import '../setting/setting.dart';
import '../game/game.dart';

class TabbarController extends StatefulWidget {
  @override
  State<StatefulWidget> createState() {
    return _MyTabbarState();
  }
}

class _MyTabbarState extends State<TabbarController> {
  int _currentIndex = 0;
  var _pageList;
  var appBarTitles = ['Home', 'Game', 'Set'];
  void initData() {
    _pageList = [
      new HomeListView(),
      new GameListView(),
      new SettingListView(),
    ];
  }
 
  void _onTapHander(int index) {
    setState(() {
      _currentIndex = index;
    });
  }
  @override
  Widget build(BuildContext context) {
    initData();
    return Scaffold(
      appBar: new AppBar(
        title: Text(appBarTitles[_currentIndex]),
      ),
      body: _pageList[_currentIndex],
      bottomNavigationBar: new BottomNavigationBar(
        items: <BottomNavigationBarItem>[
          BottomNavigationBarItem(
              icon: Icon(Icons.home), title: Text(appBarTitles[0])),
          BottomNavigationBarItem(
              icon: Icon(Icons.games), title: Text(appBarTitles[1])),
          BottomNavigationBarItem(
              icon: Icon(Icons.menu), title: Text(appBarTitles[2])),
        ],
        type: BottomNavigationBarType.fixed,
        currentIndex: _currentIndex,
        onTap: _onTapHander,
      ),
    );
  }
}

c)打开文件lib/main.dart,

import 'package:flutter/material.dart';
import 'other/bottomNavigationBar.dart';

void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'AppName',
      debugShowCheckedModeBanner: false, // 去掉app右上角的debug图标
      home: SampleAppPage(),
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
    );
  }
}
class SampleAppPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
        return new TabbarController();
  }
}

d)打开home文件夹,创建home.dart文件,此文件是底部导航的首页

e)
f)
g)打开other文件夹创建名字为TangPoetry_sata.dart文件,这个文件中先加入一些本地数据

class TangPoetryData {
  const TangPoetryData({
    this.title,
    this.author,
    this.contents,
    this.notes,
    this.imageUrl,
  });

  final String title;
  final String author;
  final String contents;
  final String notes;
  final String imageUrl;
}

final List<TangPoetryData> tangPoetryDatas = [
  TangPoetryData(
    title: '和张仆射塞下曲·其一',
    author: '唐代:卢纶',
    contents: '鹫翎金仆姑,燕尾绣蝥弧。独立扬新令,千营共一呼。',
    notes: '翻译:身佩雕羽制成的金仆姑好箭,旌旗上扎成燕尾蝥弧多鲜艳。大将军威严地屹立发号施令,千军万马一呼百应动地惊天。',
    imageUrl:
        'https://img01.sogoucdn.com/app/a/07/80f2e20a98944a0fa662d3fc5f472e56',
  ),
  TangPoetryData(
    title: '和张仆射塞下曲·其二',
    author: '唐代:卢纶',
    contents: '林暗草惊风,将军夜引弓。平明寻白羽,没在石棱中。',
    notes: '翻译:昏暗的树林中,草突然被风吹动,将军在夜色中连忙开弓射箭。天明寻找昨晚射的白羽箭,箭头深深插入巨大石块中。',
    imageUrl:
        'https://img01.sogoucdn.com/app/a/07/80f2e20a98944a0fa662d3fc5f472e56',
  ),
  TangPoetryData(
    title: '和张仆射塞下曲·其三',
    author: '唐代:卢纶',
    contents: '月黑雁飞高,单于夜遁逃。欲将轻骑逐,大雪满弓刀。',
    notes: '翻译:死寂之夜,乌云遮月,天边大雁惊飞,单于的军队想要趁着夜色悄悄潜逃。正想要带领轻骑兵一路追赶,大雪纷纷扬扬落满了身上的弓刀。',
    imageUrl:
        'https://img01.sogoucdn.com/app/a/07/80f2e20a98944a0fa662d3fc5f472e56',
  ),
  TangPoetryData(
    title: '和张仆射塞下曲·其四',
    author: '唐代:卢纶',
    contents: '野幕敞琼筵,羌戎贺劳旋。醉和金甲舞,雷鼓动山川。',
    notes: '翻译:在野外天幕下设下劳军盛宴,边疆兄弟民族都来祝贺我军凯旋。喝醉酒后还要和着金甲跳舞,欢腾的擂鼓声震动了周围的山川。',
    imageUrl:
        'https://img01.sogoucdn.com/app/a/07/80f2e20a98944a0fa662d3fc5f472e56',
  ),
];

3 项目代码地址

本项目的地址:link

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值