提交 282f3f06 authored 作者: yueweilu's avatar yueweilu

1、开屏广告显示

2、广告跳转界面
上级 663471f9
......@@ -3,12 +3,15 @@ library ad;
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:flutter_book/widgets/index.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:go_router/go_router.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../../models/index.dart';
import '../../routes/index.dart';
import '../course/index.dart';
......
part of ad;
class AdPage extends StatefulWidget {
const AdPage({Key? key}) : super(key: key);
final List<AdModel> ads;
const AdPage({
Key? key,
required this.ads
}) : super(key: key);
@override
State<AdPage> createState() => _AdPageState();
......@@ -16,8 +20,14 @@ class _AdPageState extends State<AdPage> {
body: Stack(
fit: StackFit.expand,
children: [
Container(
GestureDetector(
onTap: (){
context.pushNamed(Routes.adDetail,extra: widget.ads.first);
},
child: Container(
color: Colors.green,
child: CustomImage.network(url: widget.ads.first.pic??''),
),
),
Positioned(
top: 40.w,
......
library ad_detail;
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import '../../models/index.dart';
part 'view.dart';
\ No newline at end of file
part of ad_detail;
class AdDetailPage extends StatefulWidget {
final AdModel adModel;
const AdDetailPage({
Key? key,
required this.adModel
}) : super(key: key);
@override
State<AdDetailPage> createState() => _AdDetailPageState();
}
class _AdDetailPageState extends State<AdDetailPage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('用户协议'),
),
body: InAppWebView(
initialUrlRequest: URLRequest(
url: Uri.parse(widget.adModel.url??''),
),
)
);
}
}
......@@ -71,7 +71,12 @@ class _CoursePageState extends State<CoursePage> {
Container(
color: Colors.transparent,
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: BuildBanner(items:controller.ads),
child: BuildBanner(
items:controller.ads,
onTap:(adModel){
context.pushNamed(Routes.adDetail,extra: adModel);
} ,
),
):const SizedBox(),
Expanded(
child: CustomPullScrollView(
......
......@@ -2,9 +2,11 @@ part of course;
class BuildBanner extends StatelessWidget {
final List <AdModel>items;
final void Function(AdModel adModel)? onTap;
const BuildBanner({
Key? key,
this.items = const [],
this.onTap
}) : super(key:key);
@override
......@@ -39,10 +41,15 @@ class BuildBanner extends StatelessWidget {
),
//CustomImage.network(item.pic??'',)
child: GestureDetector(
onTap: (){
if (onTap !=null) onTap!(item);
},
child: ClipRRect(
borderRadius: BorderRadius.circular(8.w),
child: CustomImage.network(url: item.pic??'')
),
),
// child: CustomImage.asset(
// url: 'assets/images/banner.png',
// width: 130.w,
......
......@@ -85,7 +85,12 @@ class _LibraryPageState extends State<LibraryPage> {
controller.ads.isNotEmpty?Container(
color: Colors.transparent,
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: BuildBanner(items:controller.ads)
child: BuildBanner(
items:controller.ads,
onTap:(adModel){
context.pushNamed(Routes.adDetail,extra: adModel);
} ,
)
):const SizedBox(),
LibraryContentPage(controller: controller,)
......
......@@ -99,7 +99,12 @@ class _MinePageState extends State<MinePage> {
Container(
color: Colors.transparent,
padding: EdgeInsets.symmetric(horizontal: 10.w),
child: BuildBanner(items:controller.ads),
child: BuildBanner(
items:controller.ads,
onTap:(adModel){
context.pushNamed(Routes.adDetail,extra: adModel);
} ,
),
):const SizedBox(),
Gaps.vGaps5,
BuildAccount(items:controller.accounts,onTap: (ReadModel model) async{
......
......@@ -32,8 +32,12 @@ class _SplashPageState extends State<SplashPage> {
Widget build(BuildContext context) {
return Scaffold(
extendBodyBehindAppBar: true,
appBar: AppBar(),
body: Image.asset('assets/images/splash.png',fit: BoxFit.cover,)
// appBar: AppBar(),
body: Container(
height: double.infinity,
width: double.infinity,
child: Image.asset('assets/images/splash.png',fit: BoxFit.cover,),
)
// const Column(
// crossAxisAlignment: CrossAxisAlignment.stretch,
// mainAxisAlignment: MainAxisAlignment.center,
......
......@@ -43,6 +43,7 @@ import 'package:flutter_book/pages/version_des/index.dart';
import 'package:go_router/go_router.dart';
import '../models/index.dart';
import '../pages/ad_detail/index.dart';
import '../pages/bai_ke/index.dart';
import '../pages/read_web/index.dart';
import '../pages/user_edit_note/index.dart';
......
......@@ -7,6 +7,7 @@ abstract class Routes {
static const splash = 'splash';
static const main = 'main';
static const ad = 'ad';
static const adDetail = 'ad_detail';
static const web = 'read_web';
......@@ -118,8 +119,8 @@ abstract class Routes {
static final GoRouter config = GoRouter(
// initialLocation: '/$splash',
initialLocation: '/',
initialLocation: '/$splash',
// initialLocation: '/',
observers: [observer],
// redirect: _RouteRedirect.auth,
routes: [
......@@ -147,7 +148,7 @@ abstract class Routes {
pageBuilder: (context, state) =>CupertinoPage(
name: state.uri.toString(),
key: state.pageKey,
child: const AdPage()
child: AdPage(ads: state.extra as List<AdModel>,)
)
),
/// 登录模块
......@@ -574,6 +575,15 @@ abstract class Routes {
child: const OrderSearchPage(),
)
),
GoRoute( // 订单搜索
path: '/$adDetail',
name: adDetail,
pageBuilder: (context, state) =>CupertinoPage(
name: state.uri.toString(),
key: state.pageKey,
child: AdDetailPage(adModel: state.extra as AdModel,),
)
),
]
);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论