Skip to content
Home » Football » Guangzhou Dandelion vs Ganzhou Ruishi FC

Guangzhou Dandelion vs Ganzhou Ruishi FC

Expert Overview: Guangzhou Dandelion vs Ganzhou Ruishi FC

The upcoming match between Guangzhou Dandelion and Ganzhou Ruishi FC is poised to be a captivating encounter, with both teams bringing unique strengths and challenges to the pitch. Guangzhou Dandelion, playing at home, has shown a solid offensive record, averaging 1.35 goals per game, which could pressure the Ganzhou Ruishi FC defense. Conversely, Ganzhou Ruishi FC has been relatively resilient defensively, conceding an average of 2.80 goals per game. With an average total goal expectation of 3.35 for this match, fans can anticipate a dynamic game that may offer multiple scoring opportunities.

Guangzhou Dandelion

WLWDW
-

Ganzhou Ruishi FC

LWDLD
Date: 2025-08-03
Time: 08:00
(FT)
Venue: Not Available Yet
Score: 1-0

Predictions:

MarketPredictionOddResult
Away Team Not To Score In 1st Half87.20%(1-0)
Both Teams Not To Score In 1st Half86.90%(1-0)
Both Teams Not To Score In 2nd Half77.70%(1-0)
Home Team To Score In 1st Half81.50%(1-0)
Over 1.5 Goals79.40%(1-0) 1.30
Over 0.5 Goals HT75.40%(1-0) 0-0 1H 1.38
Away Team Not To Score In 2nd Half72.80%(1-0)
Sum of Goals 2 or 359.90%(1-0)
Home Team To Score In 2nd Half62.00%(1-0)
Home Team To Win55.00%(1-0) 1.44
Under 2.5 Goals56.00%(1-0) 1.80
Both Teams Not to Score53.70%(1-0) 1.70
Avg. Total Goals2.85%(1-0)
Avg. Conceded Goals2.40%(1-0)
Avg. Goals Scored1.95%(1-0)

Predictions: Away Team Not To Score In 1st Half

With odds of 91.90, there is a strong prediction that Ganzhou Ruishi FC will not score in the first half. This suggests that Guangzhou Dandelion’s defense could effectively contain the away team’s attacks early on, leveraging their home advantage and possibly adopting a strategic approach to dominate possession and create scoring opportunities.

Predictions: Both Teams Not To Score In 1st Half

The odds of 87.10 for neither team scoring in the first half reflect the likelihood of a cautious start from both sides. Both teams might focus on defensive stability and building up play gradually, leading to a period of low-scoring tension as they assess each other’s strategies.

Predictions: Both Teams Not To Score In 2nd Half

At odds of 82.20, the prediction that both teams will fail to score in the second half suggests potential fatigue or strategic shifts towards defense as the match progresses. This scenario might unfold if both teams have managed to secure leads or draws by halftime.

Predictions: Home Team To Score In 1st Half

With odds of 78.30, it is predicted that Guangzhou Dandelion will find the net in the first half. This aligns with their offensive capabilities and home advantage, which could see them capitalize on early chances to set the tone for the match.

Predictions: Over 1.5 Goals

The odds of 80.70 indicate a high probability of more than one and a half goals being scored in the match. Given both teams’ attacking potential and historical averages, this outcome seems plausible, promising an engaging contest for fans.

Predictions: Over 0.5 Goals HT

With odds of 74.10, it is expected that more than half a goal will be scored by halftime. This prediction supports the idea that at least one team will break through defenses early on, contributing to an eventful first half.

Predictions: Away Team Not To Score In 2nd Half

The odds of 72.20 suggest Ganzhou Ruishi FC might struggle to score in the second half. This could be due to increased defensive adjustments by Guangzhou Dandelion or fatigue affecting the away team’s performance.

Predictions: Sum of Goals 2 or 3

At odds of 59.50, it is predicted that the total number of goals scored will be either two or three. This aligns with the average total goals expected (3.35) and reflects a balanced outcome between defensive resilience and offensive opportunities.

Predictions: Home Team To Score In 2nd Half

With odds of 58.70, there is a strong likelihood that Guangzhou Dandelion will score in the second half. This prediction considers their offensive strengths and potential adjustments after halftime.

Predictions: Home Team To Win

The odds of 57.60 favor Guangzhou Dandelion winning the match. Playing at home and having a favorable goal-scoring record enhances their chances of securing a victory against Ganzhou Ruishi FC.

Predictions: Under 2.5 Goals

With odds of 53.60, it is predicted that fewer than two and a half goals will be scored in total. This outcome suggests a closely contested match where defensive strategies might limit scoring opportunities.

Predictions: Both Teams Not to Score

The odds of 55.40 indicate a possibility that neither team will score throughout the match. This scenario could arise if both teams prioritize defense over attack, leading to a tightly contested draw.

Additional Predictions

import ‘dart:async’;
import ‘package:flutter/material.dart’;
import ‘package:flutter/services.dart’;
import ‘package:flutter_svg/svg.dart’;
import ‘package:flutter_native_timezone/flutter_native_timezone.dart’;
import ‘package:intl/intl.dart’;

class WidgetBuilder {

/// get current date time
static DateTime getCurrentDateTime() {
return DateTime.now();
}

/// get current date time string
static String getCurrentDateTimeString() {
final DateTime now = getCurrentDateTime();
return DateFormat(‘yyyy-MM-dd HH:mm:ss’).format(now);
}

/// get current date string
static String getCurrentDateString() {
final DateTime now = getCurrentDateTime();
return DateFormat(‘yyyy-MM-dd’).format(now);
}

/// get current hour string
static String getCurrentHourString() {
final DateTime now = getCurrentDateTime();
return DateFormat(‘HH’).format(now);
}

/// get current minute string
static String getCurrentMinuteString() {
final DateTime now = getCurrentDateTime();
return DateFormat(‘mm’).format(now);
}

/// get current timezone name
static Future getTimeZoneName() async {
return await FlutterNativeTimezone.getLocalTimezone();
}

}
import ‘package:flutter/material.dart’;

class CustomScrollViewDemo extends StatefulWidget {

@override
_CustomScrollViewDemoState createState() => _CustomScrollViewDemoState();
}

class _CustomScrollViewDemoState extends State {

@override
Widget build(BuildContext context) {
return CustomScrollView(
slivers: [
SliverAppBar(
title: Text(“SliverAppBar”),
pinned: true,
floating: true,
expandedHeight: kToolbarHeight *3,
backgroundColor: Colors.blue[100],
elevation: null,
badgeColor: Colors.red,
badgeText: Text(“new”),
),
SliverToBoxAdapter(
child: Container(
height: kToolbarHeight *4,
color: Colors.amber,
child: Center(child: Text(“SliverToBoxAdapter”)),
),
),
SliverList(
itemBuilder: (context,index){
return ListTile(
title: Text(“$index”),
);
},
itemCount:20,
),
SliverGrid(
gridDelegate:
SliverGridDelegateWithMaxCrossAxisExtent(
maxCrossAxisExtent: MediaQuery.of(context).size.width/3,
mainAxisSpacing:10,
crossAxisSpacing:10,
childAspectRatio:.8,
),
decoration:
BoxDecoration(color: Colors.lightGreenAccent),
children:
List.generate(30,(index){
return Container(
alignment:
Alignment.center,
decoration:
BoxDecoration(color:
Colors.lightBlueAccent[index%9]),
child:
Text(“$index”),
);
}),
)
],
);
}

}xiaobaiwangxiao/flutter_demo/lib/pages/widget/canvas/canvas_paint_demo.dart
import ‘dart:async’;
import ‘dart:convert’;
import ‘dart:math’;

import ‘package:flutter/material.dart’;

class CanvasPaintDemo extends StatefulWidget {

final List _paintType = [
“Fill”,
“Stroke”,
“FillAndStroke”,
“None”,
“StrokeWidth”,
“StrokeCap”,
“StrokeJoin”,
“StrokeMiterLimit”,
“BlendMode”
];

final List _blendModeType = [
BlendMode.srcOver.name,
BlendMode.clear.name,
BlendMode.srcATop.name,
BlendMode.dstOver.name,
BlendMode.dstATop.name,
BlendMode.srcIn.name,
BlendMode.dstIn.name,
BlendMode.srcOut.name,
BlendMode.dstOut.name,
BlendMode.srcATop.name,
BlendMode.xor.name,
BlendMode.plus.name,
BlendMode.modulate.name,
BlendMode.screen.name,
BlendMode.overlay.name,
BlendMode.difference.name,
BlendMode.darken.name,
BlendMode.lighten.name
];

final List _strokeCapType = [
StrokeCap.butt.toString(),
StrokeCap.round.toString(),
StrokeCap.square.toString(),
];

final List _strokeJoinType = [
StrokeJoin.miter.toString(),
StrokeJoin.round.toString(),
StrokeJoin.bevel.toString(),
];

int _paintIndex = -1;
int _blendIndex = -1;
int _strokeCapIndex = -1;
int _strokeJoinIndex = -1;

double _paintWidth = .5;

double _paintDashWidth = .5;

double _paintDashSpace = .5;

double _strokeWidth = .5;

double _strokeMiterLimit = .5;

CanvasPaintDemo();

void _changePaintIndex(int index) {
setState(() => _paintIndex = index);
}

void _changeBlendIndex(int index) {
setState(() => _blendIndex = index);
}

void _changeStrokeCapIndex(int index) {
setState(() => _strokeCapIndex = index);
}

void _changeStrokeJoinIndex(int index) {
setState(() => _strokeJoinIndex = index);
}

void changePaintWidth(double value) {
setState(() => _paintWidth = value);
}

void changePaintDashWidth(double value) {
setState(() => _paintDashWidth = value);
}

void changePaintDashSpace(double value) {
setState(() => _paintDashSpace = value);
}

void changeStrokeWidth(double value) {
setState(() => _strokeWidth = value);
}

void changeStrokeMiterLimit(double value) {
setState(() => _strokeMiterLimit = value);
}

String toJson() =>
json.encode({
“paint”:_paintType[_paintIndex],
“blend”:_blendType[_blendIndex],
“strokeCap”:_strokeCapType[_strokeCapIndex],
“strokeJoin”:_strokeJoinType[_strokeJoinIndex],
“width”:_paintWidth.toString(),
“dashWidth”:_paintDashWidth.toString(),
“dashSpace”:_paintDashSpace.toString(),
“strokeWidth”:_strokeWidth.toString(),
“miterLimit”:_strokeMiterLimit.toString()
});

Map toJsonMap() =>
json.decode(toJson());

CanvasPaintDemo copyWith({
int? paintIndex ,
int? blendIndex ,
int? strokeCapIndex ,
int? strokeJoinIndex ,
double? paintWidth ,
double? paintDashWidth ,
double? paintDashSpace ,
double? strokeWidth ,
double? strokeMiterLimit
}) =>
CanvasPaintDemo()
.._paintIndex= paintIndex ?? this._paintIndex
.._blendIndex= blendIndex ?? this._blendIndex
.._strokeCapIndex= strokeCapIndex ?? this._strokeCapIndex
.._strokeJoinIndex= strokeJoinIndex ?? this._strokeJoinIndex
.._paintWidth= paintWidth ?? this._paintWidth
.._paintDashWidth= paintDashWidth ?? this._paintDashWidth
.._paintDashSpace= paintDashSpace ?? this._paintDashSpace
.._strokeWidth= strokeWidth ?? this._strokeWidth
.._strokeMiterLimit= strokeMiterLimit ?? this._strokeMiterLimit;

Color getColor(String type) {
if(type == null || type.isEmpty)
return Colors.transparent;
else if(type == “none”)
return Colors.transparent;
else if(type == “red”)
return Colors.red;
else if(type == “green”)
return Colors.green;
else if(type == “blue”)
return Colors.blue;
else if(type == “#ffffff”)
return Color(0xffffffff);
else if(type == “#ff0000”)
return Color(0xffff0000);
else if(type == “#00ff00”)
return Color(0xff00ff00);
else if(type == “#0000ff”)
return Color(0xff0000ff);
else if(type == “#ffff00”)
return Color(0xffffff00);

try{
var colorInt =
int.parse(“0xff” + type.substring(1),radix :16);

return Color(colorInt);

}catch(e){
print(e);

return Colors.transparent;
}

return Colors.transparent;

}

@override
Widget build(BuildContext context) {

var screenWidth =
MediaQuery.of(context).size.width;

var screenHeight =
MediaQuery.of(context).size.height;

var padding =
EdgeInsets.all(15);

var titleStyle =
TextStyle(fontSize :18,color :Colors.black);

var contentStyle =
TextStyle(fontSize :14,color :Colors.black);

var containerStyle =
BoxDecoration(color :Colors.white,borderRadius :BorderRadius.circular(6));

var listTileStyle =
ListTileTheme(style :ListTileStyle(titleTextStyle :contentStyle));

var scrollController =
ScrollController();

var saveController =
TextEditingController();

var saveButton =
MaterialButton(onPressed :(){},child :Text(“保存”));

Timer.periodic(Duration(seconds :10), (timer){
setState(() {});
scrollController.animateTo(
scrollController.position.maxScrollExtent+screenHeight/6*5+padding.top+padding.bottom+60*4+20*4+15*4+30+60*4+20*4+15*4+60*4+20*4+15*4+30,-duration :Duration(milliseconds :500),curve :Curves.easeInOutExpo);

//print(scrollController.position.pixels); // 滚动的位置,当滚动到底部时会停止滚动,滚动到顶部时不会停止滚动。
//print(scrollController.position.maxScrollExtent); // 最大的滚动距离

//print(scrollController.offset); // 当前的偏移量,当滚动到顶部或底部时,偏移量不会停止变化。
//print(scrollController.position.minScrollExtent); // 最小的偏移量

//print(scrollController.position.extentAfter); // 当前位置到最大位置的距离。
//print(scrollController.position.extentBefore); // 当前位置到最小位置的距离。

//print(scrollController.position.atEdge); // 是否在边界处。
//print(scrollController.position.pixels==scrollController.position.maxScrollExtent); // 是否滚动到底部。
//print(scrollController.position.pixels==scrollController.position.minScrollExtent); // 是否滚动到顶部。

});

void changePaint(String type){
setState(() {});
}

void changeBlend(String type){
setState(() {});
}

void changeStrokeCap(String type){
setState(() {});
}

void changeStrokeJoin(String type){
setState(() {});
}