bug fixes
This commit is contained in:
parent
56a885a6ee
commit
b343541200
|
|
@ -142,7 +142,8 @@ class RouteGenerator {
|
||||||
return _createRoute(
|
return _createRoute(
|
||||||
ChangeNotifierProvider<HashtagState>(
|
ChangeNotifierProvider<HashtagState>(
|
||||||
create: (context) => HashtagState(),
|
create: (context) => HashtagState(),
|
||||||
child: Hashtag(tag: settings.arguments as Tag),
|
child:
|
||||||
|
Hashtag(pageData: settings.arguments as Map<String, dynamic>),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
case Routes.filteredBookmarks:
|
case Routes.filteredBookmarks:
|
||||||
|
|
|
||||||
|
|
@ -13,18 +13,20 @@ import 'package:flutter_spinkit/flutter_spinkit.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class Hashtag extends StatefulWidget {
|
class Hashtag extends StatefulWidget {
|
||||||
final Tag tag;
|
final Map<String, dynamic> pageData;
|
||||||
const Hashtag({Key? key, required this.tag}) : super(key: key);
|
const Hashtag({Key? key, required this.pageData}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_HashtagState createState() => _HashtagState();
|
_HashtagState createState() => _HashtagState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _HashtagState extends State<Hashtag> {
|
class _HashtagState extends State<Hashtag> {
|
||||||
|
Tag get _tag => widget.pageData['tag'];
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
final state = context.read<HashtagState>();
|
final state = context.read<HashtagState>();
|
||||||
state.id = widget.tag.id;
|
state.id = _tag.id;
|
||||||
Future.delayed(Duration.zero, () => state.getTagItems(page: 1));
|
Future.delayed(Duration.zero, () => state.getTagItems(page: 1));
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
@ -32,7 +34,7 @@ class _HashtagState extends State<Hashtag> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return DidvanScaffold(
|
return DidvanScaffold(
|
||||||
appBarData: AppBarData(title: '#' + widget.tag.label, hasBack: true),
|
appBarData: AppBarData(title: '#' + _tag.label, hasBack: true),
|
||||||
slivers: [
|
slivers: [
|
||||||
Consumer<HashtagState>(
|
Consumer<HashtagState>(
|
||||||
builder: (context, state, child) => SliverStateHandler<HashtagState>(
|
builder: (context, state, child) => SliverStateHandler<HashtagState>(
|
||||||
|
|
@ -57,25 +59,29 @@ class _HashtagState extends State<Hashtag> {
|
||||||
case 'radar':
|
case 'radar':
|
||||||
return RadarOverview(
|
return RadarOverview(
|
||||||
radar: item,
|
radar: item,
|
||||||
|
onMarkChanged: (_, value, __) =>
|
||||||
|
_changeMark(item.id, value, type),
|
||||||
onCommentsChanged: (_, count) => item.comments = count,
|
onCommentsChanged: (_, count) => item.comments = count,
|
||||||
onMarkChanged: (_, value, __) => item.marked = value,
|
|
||||||
);
|
);
|
||||||
case 'news':
|
case 'news':
|
||||||
return NewsOverview(
|
return NewsOverview(
|
||||||
news: item,
|
news: item,
|
||||||
onMarkChanged: (_, value, __) => item.marked = value,
|
onMarkChanged: (_, value, __) =>
|
||||||
|
_changeMark(item.id, value, type),
|
||||||
);
|
);
|
||||||
case 'podcast':
|
case 'podcast':
|
||||||
return PodcastOverview(
|
return PodcastOverview(
|
||||||
podcast: item,
|
podcast: item,
|
||||||
onMarkChanged: (_, value, __) => item.marked = value,
|
onMarkChanged: (_, value, __) =>
|
||||||
|
_changeMark(item.id, value, type),
|
||||||
studioRequestArgs:
|
studioRequestArgs:
|
||||||
const StudioRequestArgs(page: 0, type: 'podcast'),
|
const StudioRequestArgs(page: 0, type: 'podcast'),
|
||||||
);
|
);
|
||||||
case 'video':
|
case 'video':
|
||||||
return VideoOverview(
|
return VideoOverview(
|
||||||
video: item,
|
video: item,
|
||||||
onMarkChanged: (_, value, __) => item.marked = value,
|
onMarkChanged: (_, value, __) =>
|
||||||
|
_changeMark(item.id, value, type),
|
||||||
studioRequestArgs:
|
studioRequestArgs:
|
||||||
const StudioRequestArgs(page: 0, type: 'video'),
|
const StudioRequestArgs(page: 0, type: 'video'),
|
||||||
);
|
);
|
||||||
|
|
@ -90,4 +96,15 @@ class _HashtagState extends State<Hashtag> {
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _changeMark(int id, bool value, String type) {
|
||||||
|
final state = context.read<HashtagState>();
|
||||||
|
state.items
|
||||||
|
.firstWhere((element) => element.id == id && element.type == type)
|
||||||
|
.marked = value;
|
||||||
|
state.update();
|
||||||
|
if (type == widget.pageData['type']) {
|
||||||
|
widget.pageData['onMarkChanged'](id, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ class _NewsDetailsState extends State<NewsDetails> {
|
||||||
scrollController: _scrollController,
|
scrollController: _scrollController,
|
||||||
items: state.news,
|
items: state.news,
|
||||||
currentIndex: state.currentIndex,
|
currentIndex: state.currentIndex,
|
||||||
|
onMarkChanged: (id, value) =>
|
||||||
|
widget.pageData['onMarkChanged'](id, value),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,8 @@ class _RadarDetailsState extends State<RadarDetails> {
|
||||||
scrollController: _scrollController,
|
scrollController: _scrollController,
|
||||||
items: state.radars,
|
items: state.radars,
|
||||||
currentIndex: state.currentIndex,
|
currentIndex: state.currentIndex,
|
||||||
|
onMarkChanged: (id, value) =>
|
||||||
|
widget.pageData['onMarkChanged']?.call(id, value),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|
|
||||||
|
|
@ -219,6 +219,7 @@ class _StudioDetailsState extends State<StudioDetails> {
|
||||||
children: [
|
children: [
|
||||||
StudioDetailsWidget(
|
StudioDetailsWidget(
|
||||||
scrollController: _scrollController,
|
scrollController: _scrollController,
|
||||||
|
onMarkChanged: widget.pageData['onMarkChanged'],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ class _StudioDetailsState extends State<StudioDetails> {
|
||||||
children: [
|
children: [
|
||||||
StudioDetailsWidget(
|
StudioDetailsWidget(
|
||||||
scrollController: _scrollController,
|
scrollController: _scrollController,
|
||||||
|
onMarkChanged: widget.pageData['onMarkChanged'],
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,10 @@ import 'package:url_launcher/url_launcher.dart';
|
||||||
class StudioDetailsWidget extends StatelessWidget {
|
class StudioDetailsWidget extends StatelessWidget {
|
||||||
final ScrollController? scrollController;
|
final ScrollController? scrollController;
|
||||||
final VoidCallback? onCommentsTabSelected;
|
final VoidCallback? onCommentsTabSelected;
|
||||||
|
final void Function(int id, bool value) onMarkChanged;
|
||||||
const StudioDetailsWidget({
|
const StudioDetailsWidget({
|
||||||
Key? key,
|
Key? key,
|
||||||
|
required this.onMarkChanged,
|
||||||
this.onCommentsTabSelected,
|
this.onCommentsTabSelected,
|
||||||
this.scrollController,
|
this.scrollController,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
@ -87,7 +89,11 @@ class StudioDetailsWidget extends StatelessWidget {
|
||||||
for (var i = 0;
|
for (var i = 0;
|
||||||
i < state.studio.tags.length;
|
i < state.studio.tags.length;
|
||||||
i++)
|
i++)
|
||||||
TagItem(tag: state.studio.tags[i]),
|
TagItem(
|
||||||
|
tag: state.studio.tags[i],
|
||||||
|
onMarkChanged: onMarkChanged,
|
||||||
|
type: isVideo ? 'video' : 'podcast',
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
const SizedBox(height: 20),
|
||||||
|
|
|
||||||
|
|
@ -9,18 +9,26 @@ import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class TagItem extends StatelessWidget {
|
class TagItem extends StatelessWidget {
|
||||||
final Tag tag;
|
final Tag tag;
|
||||||
|
final void Function(int id, bool value) onMarkChanged;
|
||||||
|
final String type;
|
||||||
|
|
||||||
const TagItem({
|
const TagItem({
|
||||||
Key? key,
|
Key? key,
|
||||||
required this.tag,
|
required this.tag,
|
||||||
|
required this.onMarkChanged,
|
||||||
|
required this.type,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return InkWrapper(
|
return InkWrapper(
|
||||||
borderRadius: DesignConfig.lowBorderRadius,
|
borderRadius: DesignConfig.lowBorderRadius,
|
||||||
onPressed: () =>
|
onPressed: () => Navigator.of(context).pushNamed(Routes.hashtag,
|
||||||
Navigator.of(context).pushNamed(Routes.hashtag, arguments: tag),
|
arguments: {
|
||||||
|
'tag': tag,
|
||||||
|
'onMarkChanged': onMarkChanged,
|
||||||
|
'type': type
|
||||||
|
}),
|
||||||
child: Container(
|
child: Container(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
vertical: 4,
|
vertical: 4,
|
||||||
|
|
|
||||||
|
|
@ -338,6 +338,8 @@ class _PlayerNavBar extends StatelessWidget {
|
||||||
sheetKey.currentState?.expand,
|
sheetKey.currentState?.expand,
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
onMarkChanged: (id, value) =>
|
||||||
|
context.read<StudioState>().changeMark(id, value, true),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@ class DidvanPageView extends StatefulWidget {
|
||||||
final int initialIndex;
|
final int initialIndex;
|
||||||
final int currentIndex;
|
final int currentIndex;
|
||||||
final bool isRadar;
|
final bool isRadar;
|
||||||
|
final void Function(int id, bool value) onMarkChanged;
|
||||||
final ScrollController scrollController;
|
final ScrollController scrollController;
|
||||||
|
|
||||||
final void Function(int index) onPageChanged;
|
final void Function(int index) onPageChanged;
|
||||||
|
|
@ -32,6 +33,7 @@ class DidvanPageView extends StatefulWidget {
|
||||||
required this.onPageChanged,
|
required this.onPageChanged,
|
||||||
required this.isRadar,
|
required this.isRadar,
|
||||||
required this.currentIndex,
|
required this.currentIndex,
|
||||||
|
required this.onMarkChanged,
|
||||||
}) : super(key: key);
|
}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
|
@ -119,7 +121,11 @@ class _DidvanPageViewState extends State<DidvanPageView> {
|
||||||
runSpacing: 8,
|
runSpacing: 8,
|
||||||
children: [
|
children: [
|
||||||
for (var i = 0; i < item.tags.length; i++)
|
for (var i = 0; i < item.tags.length; i++)
|
||||||
TagItem(tag: item.tags[i]),
|
TagItem(
|
||||||
|
tag: item.tags[i],
|
||||||
|
onMarkChanged: widget.onMarkChanged,
|
||||||
|
type: widget.isRadar ? 'radar' : 'news',
|
||||||
|
),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue